3

我在酒吧喝了几杯啤酒,这个女孩争辩说让 mvvm 与现实世界的应用程序一起工作很痛苦,她说为了解决 mvvm 中的问题,你添加更多代码然后你会遇到另一个问题你添加更多代码,它永远不会结束,我同意,当我读到 mvvm 听起来不错,我不想使用棱镜或 MVVM 灯,我只需要一种在我的视图之间切换的方法。我的应用程序看起来像这样,所以请在我酒精中毒之前启发我

在此处输入图像描述

4

1 回答 1

7

如果你想要松耦合的通信,你需要一个 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 ViewModels,您可以将所有内容放在单个 ViewModel 中,并有一些DataTriggers或一些东西来动态更改视图,但是 Parent - Children ViewModel 方法更清洁 IMO。

于 2013-10-04T22:03:20.053 回答