天天看點

C# WPF MVVM模式下在主窗體顯示子窗體并擷取結果

01

前言

在winform中打開一個新的子窗體很簡單,直接執行個體化窗體并show一下就可以:

Form2 f2 = new Form2();

  f2.Show();
      

  或者

Form2 f2 = new Form2();

  f2.ShowDialog();
      

  

但是,在wpf的mvvm模式下,這種方法是行不通的,因為邏輯是在viedmodel中寫的,CM架構下viewmodel和view是通過正則自動比對的。是以正常是通過調用架構下得WindowManager接口,在window背景代碼中通過WindowManager注冊需要彈出的窗體類型,在ViewModel通過WindowManager的Show或ShowDialog方法,顯示出來。

02

ShowDialog用法實作

首先執行個體化新的子窗體SubShowWindowViewModel ,然後通過CM架構的ioc容器擷取IWindowManager接口,通過接口的ShowDialog調出子窗體,ControlTestStr 用來顯示子窗體的指派并在界面顯示。

using Caliburn.Micro;
using PropertyChanged;

namespace CaliburnTest
{
    [AddINotifyPropertyChangedInterface]
    public class ControlTestViewModel
    {
        public string ControlTestStr { get; set; } = string.Empty;
        public void  NewWindowShow()
        {
            ControlTestStr = "NewWindowShow";
            SubShowWindowViewModel subShowWindowViewModel = new SubShowWindowViewModel(ControlTestStr);
            IWindowManager windowManager = IoC.Get<IWindowManager>();
            windowManager.ShowDialog(subShowWindowViewModel);
            ControlTestStr = subShowWindowViewModel.SubShowWindowStr;
        }
    }
}
      

03

結果示範

C# WPF MVVM模式下在主窗體顯示子窗體并擷取結果

ControlTestStr 擷取到了新窗體的指派并顯示到了界面.

04

源碼下載下傳

連結:https://pan.baidu.com/s/18Z340Jma-BYDzDA2QSgePg

提取碼:點選在看後添加小編微信zls20210502擷取。

技術群:需要進技術群的添加小編微信時切記備注,進群!