C# 如何将不同模块中的viewmodel公开给另一个模块中的控制器?

C# 如何将不同模块中的viewmodel公开给另一个模块中的控制器?,c#,wpf,mvvm,unity-container,prism,C#,Wpf,Mvvm,Unity Container,Prism,我有一个StockModule和一个PurchaseModule。当我收到新的购买时,我会将其添加到数据库中的股票模型中 我的问题是,我的StockModule中的ViewModel中有一个ObservableCollection库存列表,而添加库存的控制器位于PurchaseModule中。我不知道该如何告诉StockModule中的ViewVodel我已经更新了stockList 我正在统一使用wpf和prism中的数据绑定。在一个模块内更新视图很容易,但我还没有找到在两个模块之间进行更新的

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

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

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


初始化PurchaseModule时是否应传递对StockController的引用?我不想这样做,因为这似乎耦合得太紧密。

您应该使用Marlon的
中介器或Prism的
事件聚合器来实现视图模型或组件之间的通信(它们可以在单个模块中,也可以跨多个模块)

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

更多关于调解人的阅读:


Prism EventAggregator:

我已经使用了Prism的EventAggregator,但没有想到在模块之间使用它。哦!我现在就试试这个。它很管用。我真傻。谢谢酷。很高兴,它确实帮了你:)