ViewModel如何与自己的View进行通信

时间:2012-11-03 20:31:02

标签: c# wpf mvvm mvvm-light

我正在开发一个WPF MVVM Light应用程序,我想显示一些消息框/对话框,或者还有一些其他场景,我希望我的View模型与其视图进行通信或在其各自的视图上引发一些事件。

我怎么能实现这个目标?

3 个答案:

答案 0 :(得分:2)

查看MVVM Light的Messenger类。当您下载MVVM灯时,它甚至应该默认为样本。它类似于Messenger.Default.Send(new YourMessageClass()),你可以在View端注册监听器。

答案 1 :(得分:1)

prism框架有一个交互请求的概念来解决这个问题。可以找到一个很好的示例herehere

答案 2 :(得分:1)

显示弹出窗口的责任不应该是ViewModel的责任,而应该是“为您处理它的服务”。

如果“弹出窗口”是一个模态窗口,如“文件打开对话框”,“文件保存对话框”,消息框“确定/取消”或“是/否”等,那么我相信“服务” “将是正确的选择。原因是可以对单元测试进行加密/模拟服务。

此外,您可以根据需要实现此服务的不同实现:在debug(r,当角色属于admin或开发人员时),您拥有比发布或常规用户更多的“详细”信息,例如

现在,对于“ViewModel如何与View进行通信”,我不确定你的意思。只需在ViewModel上添加一个属性,然后将视图绑定到该属性即可。