使用Messenger实现MVVM的对话框弹出

MvvmFoudation有很多相当棒的mvvm功能实现,摘了一个Messenger放在了自己的mvvm框架里,用以实现MVVM模式的对话框弹出。

 

具体实现方法如下

  • 首先在App中定义一个Messenger属性,用于全局的信息通知与接收。
  • 注册Messenger的接收事件,该实现我放在了MainWindow中。
 1         public const string MSG_Exception = "Exception occurred.";
 2         public const string MSG_MessageBox = "A message box should be showed.";
 3 
 4 
 5 
 6         private void RegisterExceptionMessage()
 7         {
 8             App.Messenger.Register(MSG_Exception, (Action<Exception>)(param =>
 9             {
10                 ModernDialog.ShowMessage((string)param.Message, "Error", MessageBoxButton.OK);
11                 App.Logger.Error(param);
12             }));
13         }
14 
15         private void RegisterMessageBoxMessage()
16         {
17             App.Messenger.Register(MSG_MessageBox, (Action<string>)(param =>
18             {
19                 ModernDialog.ShowMessage((string)param, "Info", MessageBoxButton.OK);
20             }));
21         }
MainWindow

ModernDialog是我用的一个WPF的UI库中的对话框,样式比较好看,具体用什么对话框看心情~

 

接收事件注册完了,就可以在其他ViewModel中发信啦!

例如:

App.Messenger.NotifyColleagues(MainWindow.MSG_MessageBox, "Hello world.");
//弹对话框,显示指定的文本~
App.Messenger.NotifyColleagues(MainWindow.MSG_Exception, ex);
//这个用来发送异常

显然这个Messenger有更多的使用方法,还在研究中!

posted @ 2016-02-18 17:59  浣霜之剑  阅读(507)  评论(0编辑  收藏  举报