0

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

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

因此,每当在主窗口上单击关闭按钮时,我都想调用 Usercontrol viewmodels 的 CleanUp 命令。我们如何在 XAML 或任何其他替代方案中做到这一点?

4

3 回答 3

1

ViewModels之间通信的一个常见实现是中介者模式,它描述了一个在你ViewModel的 s 之间提供Publish/Subscribe模型的公共对象。当Event感兴趣的对象出现在一个对象中时,它会publishes通知该特定对象的Mediator一个​​或多个对象,然后将其通知原始对象中的发生。subscribedEventMediatorEvent

中介者模式示例

于 2013-07-26T08:02:55.367 回答
0

您应该考虑视图模型优先方法,在这种情况下,MainWindowViewModel将引用UserControlVM1and UserControlVM2,并且可以直接调用CleanUp方法。

如果您使用的是 MVVM ,则应该考虑使用 MVVM 框架

于 2013-07-26T08:01:19.947 回答
0

您可以从Prism 开发人员指南中的一项技术中获得灵感。

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

于 2013-07-26T08:07:23.160 回答