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獲取。
技術群:需要進技術群的添加小編微信時切記備注,進群!
