MVVM儿童模型和导航和啤酒

use*_*636 3 c# mvvm viewmodel

我在酒吧,我有几个啤酒,这个女孩争辩说,让mvvm与真实世界的应用程序一起工作是痛苦的,她说,为了解决mvvm中的问题,你添加更多的代码,然后你得到另一个问题,你添加更多的代码,它永远不会结束,我同意,当我读到关于mvvm它听起来不错,我不想使用棱镜或MVVM光,我只需要一种方法来切换我的观点.我的申请看起来像这样,所以请在我酒精中毒之前激励我

在此输入图像描述

Fed*_*gui 5

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

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

    public static Action<string> OnMessageTransmitted;
}
Run Code Online (Sandbox Code Playgroud)

用法:

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);
   }
}
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢Child ViewModel,您可以将所有内容放在一个ViewModel中,并有一些DataTriggers或某些东西来动态更改视图,但是Parent-Children ViewModel方法更加清晰.