Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF MVVM在视图之间进行通信_C#_Wpf_Mvvm - Fatal编程技术网

C# WPF MVVM在视图之间进行通信

C# WPF MVVM在视图之间进行通信,c#,wpf,mvvm,C#,Wpf,Mvvm,假设我在视图a中有一个按钮,它应该触发视图B的功能。这最好是如何实现的?我可以使用中介器,但我更喜欢避免使用它,主要用于viewmodels之间的通信,而这是绝对没有其他方法的 以下是我的一个想法: 所以基本上我们有一个拦截器类来处理多个视图之间的通信。视图不知道其他视图。拦截器充当它们之间的信使 就MVVM的思维而言,这可以吗?大多数MVVM框架都包含一个用于此目的的中介 在MvvmLight中称为Messenger,在Prism中称为EventAggregator。比如说 中介可以用来以松

假设我在视图a中有一个按钮,它应该触发视图B的功能。这最好是如何实现的?我可以使用中介器,但我更喜欢避免使用它,主要用于viewmodels之间的通信,而这是绝对没有其他方法的

以下是我的一个想法:

所以基本上我们有一个拦截器类来处理多个视图之间的通信。视图不知道其他视图。拦截器充当它们之间的信使


就MVVM的思维而言,这可以吗?

大多数MVVM框架都包含一个用于此目的的中介

MvvmLight
中称为
Messenger
,在
Prism
中称为
EventAggregator
。比如说

中介可以用来以松散耦合的方式在任意两个组件(无论是视图还是视图模型)之间进行通信


所以你基本上是在描述中介模式。不要重新发明轮子:)

大多数MVVM框架都包含用于此目的的某种中介

MvvmLight
中称为
Messenger
,在
Prism
中称为
EventAggregator
。比如说

中介可以用来以松散耦合的方式在任意两个组件(无论是视图还是视图模型)之间进行通信



所以你基本上是在描述中介模式。不要重新发明轮子:)

你的拦截器和中介器或信使有什么区别?@mm8我的中介器包含静态类和属性,而这一个没有。拦截器只负责某个特性,其中中介器是不同特性的类之间通信的全局对象。静态类和属性?这些做了什么?您正在描述中介模式。如果您的视图模型彼此相关,例如父/子视图模型,那么一个视图模型引用另一个视图模型是完全可以接受的。然后,他们可以直接调用功能。如果它们断开连接,您将需要使用某种消息传递系统,正如其他人所描述的。您的拦截器和中介器或信使有什么区别?@mm8我的中介器包含静态类和属性,而这一个没有。拦截器只负责某个特性,其中中介器是不同特性的类之间通信的全局对象。静态类和属性?这些做了什么?您正在描述中介模式。如果您的视图模型彼此相关,例如父/子视图模型,那么一个视图模型引用另一个视图模型是完全可以接受的。然后,他们可以直接调用功能。如果它们断开连接,您将需要使用某种消息传递系统,正如其他人所描述的。我认为中介只是一个静态类,在字典中等待其他类存储和调用一些委托。正是“静态”部分让我不喜欢它。所以我的拦截器基本上也是一个中介,而不是静态的。是的,你的“拦截器”基本上是一个中介。它不一定是静态类,有很多不同的方法可以实现它。@BradleyUffner我假设只有当我想正确地与断开连接的系统通信时,静态才有意义。我现在确实学到了很多东西。我认为中介只是一个静态类,四处游荡,等待其他类在字典中存储和调用一些委托。正是“静态”部分让我不喜欢它。所以我的拦截器基本上也是一个中介,而不是静态的。是的,你的“拦截器”基本上是一个中介。它不一定是静态类,有很多不同的方法可以实现它。@BradleyUffner我假设只有当我想正确地与断开连接的系统通信时,静态才有意义。我现在确实学到了很多。