1

好的。因此,在观看了 Jason Dolinger对 MVVM 的最佳介绍视频(我向所有开始 WPF 的人推荐。超过一个小时的有趣内容,我保证这一个小时将在未来为您带来很多好的回报)之后,我现在很兴奋在我自己的项目中实现它。

好的。这是我的 MainWindow 类,一个 XAML 窗口,充当我项目的主 MDI 窗口。我为我的窗口添加了一个 ViewModel,要求我的菜单项绑定到 ViewModel 成员,而不是添加事件处理程序等。

到目前为止,一切都很好。现在我需要在将处理用户单击菜单项的命令中编写实际代码。进入相关命令后,我意识到我的命令和 ViewModel 都没有对实际 View 类或其他视图/视图模型的任何引用。

所以我的问题是,如何加载另一个视图以响应命令的执行?它应该全部通过 ViewModel,还是应该命令对象直接访问视图?这里的标准做法是什么?

4

2 回答 2

0

通常,您最终需要将视图(正确连接到其视图模型)添加到某种类型的Panel. 你如何做到这一点取决于你。

肮脏的解决方案是简单地从某处获取对面板的引用,创建视图和视图模型并将视图添加到面板。这会起作用,但它会将您的命令与许多非常不可取的实现细节结合起来。

为了改善这种情况,您需要开始添加合适的抽象层。看看不同的 MVVM 框架是如何做到这一点的,以了解什么可能运作良好,这将是有用的。例如,Prism 使用区域的概念来执行此操作。

于 2013-02-13T10:40:08.363 回答
0

如果此命令所做的唯一事情与视图相关(没有其他逻辑),则命令可以拥有视图,否则将命令拆分为 2 个命令并组合它们。可以有 ui 命令,只要它们不包含与您的域相关的业务逻辑。

于 2013-02-13T10:36:23.527 回答