好吧,我整理了一个演示,它应该可以使您更轻松地下载链接
功能性:
- 3窗户在总(
MainWindow
,ModalWindow
,NonModalWindow
) MainWindow
有一个TextBox
您可以输入任何内容。- 顶部的2个按钮将相应地打开“模态/非模态”窗口
- 每个窗口在打开时都将
TextBox
在其TextBlock
内部显示MainWindow中的消息。 - 在每个窗口中,您都可以在中打勾a
CheckBox
来更新结果文本块中的值MainWindow
(对于模态窗口,将在模态窗口关闭时启动。对于非模态更改,可以尽快看到)
就功能而言,就是这样
概念:
- 向
SimpleIoC
和注册多个VM 并GetInstance(...)
用于请求它们。 - 使用自定义消息类型的Messenger类用法
OpenWindowMessage
- 从父VM打开Modal / Non Modal Windows,这与MVVM原理保持一致
- 在窗口之间传递数据(仅在NonModal中显示)
重要说明:* -在此示例中,用于DialogResult
从模态窗口设置非DP 的方法不是MVVM友好cos,它使用代码隐藏来设置 应
避免DialogResult
的Window.Closing
事件的属性(如果需要“可测试”)。我偏爱的方法有点长,并且在此处(问题与答案的混合物)有很好的记录。因此,为什么为了这个示例而忽略它。
*



