01
—
前言
在winform中打開(kāi)一個(gè)新的子窗體很簡(jiǎn)單,直接實(shí)例化窗體并show一下就可以:
Form2 f2 = new Form2();
f2.Show();或者
Form2 f2 = new Form2();
f2.ShowDialog();但是,在wpf的mvvm模式下,這種方法是行不通的,因為邏輯是在viedmodel中寫(xiě)的,CM框架下viewmodel和view是通過(guò)正則自動(dòng)匹配的。所以正常是通過(guò)調用框架下得WindowManager接口,在window后臺代碼中通過(guò)WindowManager注冊需要彈出的窗體類(lèi)型,在ViewModel通過(guò)WindowManager的Show或ShowDialog方法,顯示出來(lái)。
02
—
ShowDialog用法實(shí)現
首先實(shí)例化新的子窗體SubShowWindowViewModel ,然后通過(guò)CM框架的ioc容器獲取IWindowManager接口,通過(guò)接口的ShowDialog調出子窗體,ControlTestStr 用來(lái)顯示子窗體的賦值并在界面顯示。
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
聯(lián)系客服