两个ViewModel对彼此一无所知,但是我需要将在一个viewmodel中已更改的新值发送到另一个视图模型中的方法,我有哪些选择?
请列出所有可能性以及最佳方式?
答案 0 :(得分:2)
取自this answer:
如果你想要松散耦合的通信,你需要一个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);
}
}
但请注意,包含在MVVM框架(如Prism)中的EventAggregators要复杂得多,并且包含大量功能。这只是一个简单的例子。