【发布时间】:2008-11-24 19:33:53
【问题描述】:
我正在 WPF 中实现 MVP/M-V-VM,到目前为止我很幸运。但是,我看不到这个模型如何支持实现模态对话框。我从 Crack.NET (http://www.codeplex.com/cracknetproject) 派生了我的工作,以了解这些东西是如何工作的。
我有一个带有菜单的 ShellView 视图(只是 XAML)。菜单绑定到 ShellModelView 中显示“EditPreferences”的命令。
ShellModelView 实现了 EditPreferences 的 ICommand,在这里我们要放置一个对话框,让用户编辑应用程序的首选项。
这里有几个问题: 1. ShellModelView 没有对 ShellView 的引用来正确地作为对话框的父级。 ShellModelView 是 ShellView 的 DataContext,但我没有看到设置的反向引用。 2. ShellModelView 无论如何都不应该加载显式 UI。那么这里正确的交互模型是什么? 3. 我如何建立我的 PreferencesDialog 以便它在逻辑和视图之间正确分离? PreferencesDialog 本身需要是一个 Window,因此您可以在其上调用 ShowDialog,但这意味着您需要对 Window(例如 View)的引用才能实例化它。理想情况下,我应该能够在 PreferencesDialog 中对代码/验证进行单元测试,而无需实例化视图(也许使用 Mock 视图?)。
【问题讨论】:
标签: wpf design-patterns mvvm mvp