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

Communication between two ViewModels with same Model and two views

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

两个 ViewModel 应该能够以某种方式相互通信。例如,如果 ViewModel1 更新了模型中的某些内容,ViewModel2 也应该更新他的视图。 ViewModels 不必相互了解,当一方改变某些东西时,它们应该同步。

我发现了一些有关中介者模式的旧帖子。这仍然是要走的路吗?我认为观察者模式在这里行不通。我能想到的唯一选择是在两个 ViewModel 上创建一个接口,让它们相互交谈。

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

上阅读它

控制器将能够 return 具有更新值的视图模型。您也可以只有 1 个视图模型,供您拥有的两个视图使用。

我认为您要寻找的是 Message-passing 视图系统 Models.if 您希望它们松散耦合,您可以使用事件自己实现一个。 在 prism 库中也有 Event Aggregator class 进行 same.some classes 订阅和一些发布他们的消息。