C# WPF MVVM在视图之间进行通信
假设我在视图a中有一个按钮,它应该触发视图B的功能。这最好是如何实现的?我可以使用中介器,但我更喜欢避免使用它,主要用于viewmodels之间的通信,而这是绝对没有其他方法的 以下是我的一个想法: 所以基本上我们有一个拦截器类来处理多个视图之间的通信。视图不知道其他视图。拦截器充当它们之间的信使C# WPF MVVM在视图之间进行通信,c#,wpf,mvvm,C#,Wpf,Mvvm,假设我在视图a中有一个按钮,它应该触发视图B的功能。这最好是如何实现的?我可以使用中介器,但我更喜欢避免使用它,主要用于viewmodels之间的通信,而这是绝对没有其他方法的 以下是我的一个想法: 所以基本上我们有一个拦截器类来处理多个视图之间的通信。视图不知道其他视图。拦截器充当它们之间的信使 就MVVM的思维而言,这可以吗?大多数MVVM框架都包含一个用于此目的的中介 在MvvmLight中称为Messenger,在Prism中称为EventAggregator。比如说 中介可以用来以松
就MVVM的思维而言,这可以吗?大多数MVVM框架都包含一个用于此目的的中介 在
MvvmLight
中称为Messenger
,在Prism
中称为EventAggregator
。比如说
中介可以用来以松散耦合的方式在任意两个组件(无论是视图还是视图模型)之间进行通信
所以你基本上是在描述中介模式。不要重新发明轮子:)大多数MVVM框架都包含用于此目的的某种中介 在
MvvmLight
中称为Messenger
,在Prism
中称为EventAggregator
。比如说
中介可以用来以松散耦合的方式在任意两个组件(无论是视图还是视图模型)之间进行通信
所以你基本上是在描述中介模式。不要重新发明轮子:)你的拦截器和中介器或信使有什么区别?@mm8我的中介器包含静态类和属性,而这一个没有。拦截器只负责某个特性,其中中介器是不同特性的类之间通信的全局对象。静态类和属性?这些做了什么?您正在描述中介模式。如果您的视图模型彼此相关,例如父/子视图模型,那么一个视图模型引用另一个视图模型是完全可以接受的。然后,他们可以直接调用功能。如果它们断开连接,您将需要使用某种消息传递系统,正如其他人所描述的。您的拦截器和中介器或信使有什么区别?@mm8我的中介器包含静态类和属性,而这一个没有。拦截器只负责某个特性,其中中介器是不同特性的类之间通信的全局对象。静态类和属性?这些做了什么?您正在描述中介模式。如果您的视图模型彼此相关,例如父/子视图模型,那么一个视图模型引用另一个视图模型是完全可以接受的。然后,他们可以直接调用功能。如果它们断开连接,您将需要使用某种消息传递系统,正如其他人所描述的。我认为中介只是一个静态类,在字典中等待其他类存储和调用一些委托。正是“静态”部分让我不喜欢它。所以我的拦截器基本上也是一个中介,而不是静态的。是的,你的“拦截器”基本上是一个中介。它不一定是静态类,有很多不同的方法可以实现它。@BradleyUffner我假设只有当我想正确地与断开连接的系统通信时,静态才有意义。我现在确实学到了很多东西。我认为中介只是一个静态类,四处游荡,等待其他类在字典中存储和调用一些委托。正是“静态”部分让我不喜欢它。所以我的拦截器基本上也是一个中介,而不是静态的。是的,你的“拦截器”基本上是一个中介。它不一定是静态类,有很多不同的方法可以实现它。@BradleyUffner我假设只有当我想正确地与断开连接的系统通信时,静态才有意义。我现在确实学到了很多。