我在酒吧,我喝了几杯啤酒,这个女孩争辩说让mvvm与现实世界的应用程序一起工作很痛苦,她说为了解决mvvm中的问题你添加更多代码然后你得到另一个问题,你添加更多的代码,它永远不会结束,我同意,当我读到关于mvvm它听起来不错,我不想使用棱镜或MVVM光,我只需要一种方式来切换我的观点。我的申请看起来像这样,所以请在我酒精中毒之前激励我
答案 0 :(得分:5)
如果你想要松散耦合的通信,你需要一个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);
}
}
如果您不喜欢Child ViewModel,您可以将所有内容放在一个ViewModel中,并使用一些DataTriggers
或其他东西来动态更改视图,但是Parent-Children ViewModel方法更加清晰IMO。 / p>