子视图模型上的MVVM-调用命令

时间:2013-07-26 07:39:28

标签: wpf mvvm

我使用MVVM并且有一个带有关闭按钮的主窗口,它被绑定到MainWindowViewModel的ICommand命令。 在主窗口中有两个UserControl1和UserControl2,它们分别绑定到视图模型UserControlVM1和UserControlVM2。

UserControlVM1和UserControlVM2具有名为CleanUp的命令,用于清理资源。

因此,只要在主窗口上单击关闭按钮,我就想调用Usercontrol视图模型的CleanUp命令。我们如何在XAML或任何其他替代方案中做到这一点?

3 个答案:

答案 0 :(得分:1)

ViewModel之间通信的常见实现是Mediator Pattern,它描述了ViewModel提供Publish/Subscribe模型之间通用的对象。如果对象中出现Event感兴趣,则会publishesMediator发送通知,subscribed的一个或多个对象Event对象Mediator然后会向Event通知原始对象中发生的{{1}}。

Mediator Pattern Example

答案 1 :(得分:0)

您应该考虑视图模型的第一种方法,在这种情况下,MainWindowViewModel会引用UserControlVM1UserControlVM2,并且可以直接调用CleanUp方法。

您应该考虑using an MVVM framework if you're using MVVM

答案 2 :(得分:0)

你可以通过Prism's developer guide的技巧激发自己。

在模式和实践的Prism框架中,CompositeCommand允许多个ViewModel针对单个CompositeCommand注册自己的命令,因此可以通过一次调用来调用所有命令。 您还需要在所有ViewModel中引用的全局类,但不一定是静态类,因为您没有松散耦合模块。