两个视图模型彼此一无所知,但我需要将一个视图模型中更改的新值发送到另一个视图模型中的方法,我有什么选择?
您能否列出所有可能性,最好的方法是什么?
取
自这个答案:
如果你想要松散耦合的通信,你需要一个事件聚合器:
//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);
}
}
但请注意,MVVM 框架(如 Prism(中包含的事件聚合器要复杂得多,并且包含大量功能。这只是一个简单的例子。