如何将viewmodel从另一个模块暴露给另一个模块中的控制器?

时间:2013-10-27 14:05:35

标签: c# wpf mvvm unity-container prism

我有一个StockModule和一个PurchaseModule。当我收到新的购买时,我将其添加到数据库中的库存模型中。

我的问题是我的StockModule中的ViewModel中有一个ObservableCollection stockList,而添加该库存的控制器位于PurchaseModule中。我不知道我应该如何告诉StockModule中的ViewVodel我已经更新了stockList。

我在wpf和prism中使用数据绑定。更新模块中的视图很容易,但我没有找到在两个模块之间进行操作的方法。

初始化PurchaseModule时,是否应该将引用传递给StockController?我不想那样做,因为那似乎太紧密了。

1 个答案:

答案 0 :(得分:3)

您应该使用来自Prism的Marlon的MediatorEventAggregator来实现ViewModel或组件之间的通信(它们可以在单个模块中,也可以在多个模块中)。

在您的情况下,PurchaseModule中的ViewModel会通过Mediator / EventAggregator发布消息(例如StockAdded),然后来自StockModule的ViewModel将侦听此消息并更新它的数据和实际的视图。

更多关于Mediator的阅读:http://marlongrech.wordpress.com/2009/04/16/mediator-v2-for-mvvm-wpf-and-silverlight-applications/

Prism EventAggregator:http://msdn.microsoft.com/en-us/library/ff921122.aspx