使用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有更多的使用方法,还在研究中!

转载于:https://www.cnblogs.com/zhuyc110/p/5198942.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值