Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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# 在另一个ViewModel的属性更改上更新另一个ViewModel_C#_Wpf_Mvvm_Viewmodel_Inotifypropertychanged - Fatal编程技术网

C# 在另一个ViewModel的属性更改上更新另一个ViewModel

C# 在另一个ViewModel的属性更改上更新另一个ViewModel,c#,wpf,mvvm,viewmodel,inotifypropertychanged,C#,Wpf,Mvvm,Viewmodel,Inotifypropertychanged,两个视图模型互不了解,但我需要将一个视图模型中更改的新值发送到另一个视图模型中的方法,我的选项是什么 请列出所有的可能性以及最好的方法是什么?摘自: 如果需要松散耦合的通信,则需要EventAggregator: //Simplest EventAggregator public static class DumbAggregator { public static void BroadCast(string message) { if (OnMessageTran

两个视图模型互不了解,但我需要将一个视图模型中更改的新值发送到另一个视图模型中的方法,我的选项是什么

请列出所有的可能性以及最好的方法是什么?

摘自:

如果需要松散耦合的通信,则需要EventAggregator:

//Simplest EventAggregator
public static class DumbAggregator
{
    public static void BroadCast(string message)
    {
       if (OnMessageTransmitted != null)
           OnMessageTransmitted(message);
    }

    public static Action<string> OnMessageTransmitted;
}

但是请注意,MVVM框架(如Prism)中包含的EventAggregator要复杂得多,并且包含大量功能。这只是一个简单的例子。

请看一个类似的问题。@HighCore是事件聚合器的最佳方式吗?是的,如果您不想从一个ViewModel引用到另一个ViewModel。我建议使用事件聚合器@HighCore链接到一个。一旦你知道要搜索什么,这里有很多例子。另外一个是给我的。事件聚合器。
public class MySender
{
   public void SendMessage()
   {
       DumbAggregator.BroadCast("Hello There!");
   }
}

public class MySubscriber
{
   public MySubscriber()
   {
       DumbAggregator.OnMessageTransmitted += OnMessageReceived;
   }

   private void OnMessageReceived(string message)
   {
      MessageBox.Show("I Received a Message! - " + message);
   }
}