如何在MVVM中调出其他视图

时间:2013-02-13 10:27:19

标签: wpf mvvm

行。所以在观看了Jason Dolinger最好的introduction to MVVM视频后(我推荐给任何一个开始WPF的人。超过一个小时的有趣的东西,我保证这一小时将为你带来很多好的回报),我现在很高兴在我自己的项目中实现它。

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

到目前为止一切顺利。现在我需要在命令中编写实际代码来处理用户单击菜单项。一旦我进入相关命令,我就会发现我的命令和ViewModel都没有引用实际的View类或其他视图/视图模型。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

通常,您需要最终将视图(正确连接到其viewmodel)添加到某种类型的Panel。你究竟是怎么做的取决于你。

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

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