2013-02-13 46 views
0

好的。因此,在观看Jason Dolinger最好的introduction to MVVM视频(我建议任何开始WPF的人,一个多小时有趣的东西,我保证这个一小时将带给你很多很好的回报),我现在很兴奋实现它在我自己的项目中。如何调出MVVM中的其他视图

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

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

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

+0

您需要更改主窗口的datacontext。在MainWindow.xaml中添加所有视图和视图模型,然后在所有视图中都有主窗口对象。因此,无论何时您想从一个视图移动到另一个视图,都可以将MainWindow对象的datacontext更改为新视图。 – 2013-02-13 10:30:09

+1

@FaisalHafeez:这听起来像是无稽之谈。 – dotNET 2013-02-13 10:52:53

回答

0

如果这个命令做的唯一的事情是与一个视图(没有其他逻辑)相关,那么命令可以有一个视图,否则将命令分成两个命令并组成它们。只要不包含与您的域相关的业务逻辑,就可以使用ui命令。

0

一般而言,您需要最终添加一个视图(正确接线到其视图模型)某种类型的Panel。你如何做到这一点取决于你。

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

要改善这种状况,您需要开始在适当的抽象层中添加。了解不同的MVVM框架是如何做到这一点,以了解什么可能运作良好的想法会很有用。例如,Prism使用regions的概念来做到这一点。

相关问题