具有相同模型和两个视图的两个ViewModel之间的通信

时间:2019-07-15 19:23:53

标签: c# design-patterns observer-pattern mediator

我有一个具有两个不同视图的C#应用​​程序。每个视图都有自己的ViewModel。 ViewModel访问相同的模型。视图需要来自同一模型的数据,但格式不同。 ViewModels处理格式和验证。

两个ViewModel都应该能够以某种方式相互通信。例如,如果ViewModel1更新了模型中的某些内容,则ViewModel2也应更新其View。 ViewModel不必彼此了解,只要一侧发生更改,它们就应该同步。

我在调解员模式中发现了一些旧帖子。这仍然是要走的路吗?我认为观察者模式在这里不起作用。我唯一想到的替代方法是在两个ViewModels上创建一个接口,使它们彼此对话。

2 个答案:

答案 0 :(得分:1)

与此最相关的模式是MVC。如果您使用的是.Net Core,则可以在Microsoft Docs online上进行阅读。

控制器将能够返回具有更新值的视图模型。您还可能只有两个视图同时使用一个View模型。

答案 1 :(得分:1)

我认为您正在寻找的是用于视图模型的消息传递系统。如果您将它们松散地耦合在一起,则可以使用事件自行实现。 棱镜库中也有Event Aggregator类,它们的功能相同。一些类订阅并发布消息。