不使用Prism框架的事件聚合器,怎么实现ViewModel之间的通信

解决方案 »

  1.   

    我可能说的不太明白,程序设计中:点击view1中的按钮,view2的背景颜色改变!
    view1中的按钮绑定viewmodel1中的Press命令,如何通过Press命令的委托告诉View2 
      

  2.   

    在ViewModel1,2 中使用 单例模式 ,在ViewMode1 中 直接调用ViewModel2 的设置颜色方法。
      

  3.   

            public MainWindow()
            {
                InitializeComponent();            this.DataContext = new V2();
                //卸载当前(this)对象注册的所有MVVMLight消息
                this.Unloaded += (sender, e) => Messenger.Default.Unregister(this);
            }
     另一个页面的点击事件
            private void Select_Color(object sender, MouseButtonEventArgs e)
            {
                Border border = (Border)sender;
                var source = (V1)DataContext;
                source.SendInfo = border.Background.ToString();
                source.ExcuteSendCommand();
            }
      

  4.   

    如果不让用Messenger,那就在MainView中实例化View1和View2然后View1的点击事件在Main中触发,然后就可以直接设置View2的背景色了;