使用MVVM模式打开about框

时间:2009-08-25 05:26:12

标签: mvvm modal-dialog about-box

我正在开发一个新的WPF应用程序,我正试图保持尽可能接近MVVM模式。我的XAML文件现在没有代码隐藏,我的所有交互性都是使用Josh Smith的RelayCommand类和我的ViewModel类中的命令实现的。

这很有用,直到我开始处理内务处理任务,例如关于框和系统首选项页面。我希望将这些作为模态对话框,但如果我创建一个RelayCommand来打开这些页面,我将在视图模型中创建对视图的依赖。

这让我觉得与MVVM模式不同。

是否有建立的方法在MVVM模式中创建新窗口(模态和/或无模式)而不创建依赖关系?似乎我可以保持ViewModel干净的唯一方法是在XAML代码隐藏文件中创建一个Click事件处理程序,并在旧视图中创建新视图。

有什么建议吗?

5 个答案:

答案 0 :(得分:7)

处理此问题的一种方法是实现向ViewModel提供视图的服务。视图向服务注册,ViewModels可以从服务请求对话框。这是四人帮mediator pattern的一个例子。

答案 1 :(得分:1)

看看我对Silverlight 4的Modal Dialogs解决方案:

Modal dialogs with MVVM and Silverlight 4

答案 2 :(得分:0)

请参阅我对this question的回答,了解为什么Window类本身是ViewModel,因此您可以直接从ViewModel中使用它而无需担心。

答案 3 :(得分:0)

Laurent Bugnion有一个弱引用的调解器,在其中使用它来显示对话框消息。与广播的消息一起,发送回叫委托以供订户执行。您可以使用相同的概念来显示关于对话框。查看DialogMessage.cs from the source here

答案 4 :(得分:0)

我们使用负责UI工作流的Controller类。他们创建模态窗口,并在各种ViewModel之间进行调解。

如何在ViewModel示例应用程序中显示如何使用View-Model-ViewModel(MVVM)模式打开模式窗口:

WPF应用框架(WAF)

http://waf.codeplex.com