2

有一篇有趣的文章讨论了视图模型之间的通信模式。

我最近努力在 WPF MVVM 应用程序中实现模态对话框,但我想得越多,我就越明白为什么它很困难以及为什么没有内置帮助器来实现这一点。针对不同的平台只会加强这种视图:看起来适合显示所选项目详细信息的模式对话框通常是通过导航到移动设备上的不同视图来实现的。

所以我想问那些成功实现 MVVM 模式并避免代码隐藏的人:你是否也避免了模态对话框?您找到了哪些合适的替代品?我至少能想到两个:

  • 将子(模态)视图放置在新视图中,并使用 pub/sub 实现父子模型之间的通信;
  • 将带有子控件的面板直接添加到父视图,然后将其可见性以激活子视图作为弹出模拟模态。

第二种方法肯定更受限制,当父视图可以产生各种子视图时它并不真正起作用,但是当父视图需要显示一个小的单个弹出窗口时它看起来很合适。还是最好选择第一种方法,因为它更通用。还有其他选择吗?

4

1 回答 1

1

这就是我在 mvvm 中进行对话的方式。

调用对话窗口的 ViewModel:

 var result = this.uiDialogService.ShowDialog("Dialogwindow title goes here", dialogwindowVM);

 ... do anything with the dialog result...
于 2013-04-24T12:47:06.577 回答