2

两个 ViewModel 对彼此一无所知,但我需要将一个 ViewModel 中已更改的新值发送到另一个 ViewModel 中的方法,我有什么选择?

你能列出所有的可能性吗?最好的方法是什么?

4

1 回答 1

3

取自这个答案

如果你想要松耦合的通信,你需要一个 EventAggregator:

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

    public static Action<string> OnMessageTransmitted;
}

用法:

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);
   }
}

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

于 2013-10-08T02:56:29.113 回答