2013-07-26 20 views
0

Iam使用MVVM並具有一個帶關閉按鈕的主窗口,並且它綁定到MainWindowViewModel的ICommand命令。 在主窗口中有兩個UserControl1和UserControl2分別綁定到視圖模型UserControlVM1和UserControlVM2。MVVM-子視圖上的調用命令ModelModel

UserControlVM1和UserControlVM2有命令清理,將清理資源。

所以,無論何時在主窗口上點擊關閉按鈕,我都想調用Usercontrol viewmodels的CleanUp命令。我們如何在XAML或其他選擇中做到這一點?

+0

您的MainWindowVM是否具有對這些sub-ViewModel的引用? 一些優越的應該有這些參考,以便MainWindowVM可以知道它們。或者可能... – Arhiman

回答

1

ViewModel s之間通信的常用實現方式是Mediator Pattern,其中描述了提供Publish/Subscribe模型的ViewModel之間的共同對象。當感興趣的Event發生在對象中時,它向Mediator發送通知,然後向Mediator的特定Eventsubscribed的一個或多個對象通知發生在原始對象中的Event

Mediator Pattern Example

0

你可以從你的技術從Prism's developer guide激勵自己。

在Patterns and Practices的Prism Framework中,CompositeCommand允許多個ViewModel根據一個CompositeCommand註冊自己的命令,這樣所有的命令都可以通過一次調用來調用。 您還需要在所有視圖模型中引用的全局類,但不一定是靜態的,因爲您沒有鬆耦合的模塊。