两个 ViewModel 对彼此一无所知,但我需要将一个 ViewModel 中已更改的新值发送到另一个 ViewModel 中的方法,我有什么选择?
你能列出所有的可能性吗?最好的方法是什么?
两个 ViewModel 对彼此一无所知,但我需要将一个 ViewModel 中已更改的新值发送到另一个 ViewModel 中的方法,我有什么选择?
你能列出所有的可能性吗?最好的方法是什么?
取自这个答案:
如果你想要松耦合的通信,你需要一个 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 要复杂得多,并且包含很多功能。这只是一个简单的例子。