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
結果示範
ControlTestStr 擷取到了新窗體的指派并顯示到了界面.
04
源碼下載下傳
連結:https://pan.baidu.com/s/18Z340Jma-BYDzDA2QSgePg
提取碼:點選在看後添加小編微信zls20210502擷取。
技術群:需要進技術群的添加小編微信時切記備注,進群!