我使用MVVM并且有一个带有关闭按钮的主窗口,它被绑定到MainWindowViewModel的ICommand命令。 在主窗口中有两个UserControl1和UserControl2,它们分别绑定到视图模型UserControlVM1和UserControlVM2。
UserControlVM1和UserControlVM2具有名为CleanUp的命令,用于清理资源。
因此,只要在主窗口上单击关闭按钮,我就想调用Usercontrol视图模型的CleanUp命令。我们如何在XAML或任何其他替代方案中做到这一点?
答案 0 :(得分:1)
ViewModel
之间通信的常见实现是Mediator Pattern,它描述了ViewModel
提供Publish/Subscribe
模型之间通用的对象。如果对象中出现Event
感兴趣,则会publishes
向Mediator
发送通知,subscribed
的一个或多个对象Event
对象Mediator
然后会向Event
通知原始对象中发生的{{1}}。
答案 1 :(得分:0)
您应该考虑视图模型的第一种方法,在这种情况下,MainWindowViewModel
会引用UserControlVM1
和UserControlVM2
,并且可以直接调用CleanUp
方法。
答案 2 :(得分:0)
你可以通过Prism's developer guide的技巧激发自己。
在模式和实践的Prism框架中,CompositeCommand允许多个ViewModel针对单个CompositeCommand注册自己的命令,因此可以通过一次调用来调用所有命令。 您还需要在所有ViewModel中引用的全局类,但不一定是静态类,因为您没有松散耦合模块。