具有相同模型和两个视图的两个 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 订阅和一些发布他们的消息。
我有一个具有两个不同视图的 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 订阅和一些发布他们的消息。