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

  • 相关阅读:
    机器学习入坑指南(二):数据预处理
    03双向链表
    小甲鱼 例题
    快慢指针问题
    02循环单链表
    01静态链表
    阈值化
    图像金字塔与图片尺寸缩放
    水漫填充
    形态学滤波(4):使用分水岭算法对图像进行分割
  • 原文地址:https://www.cnblogs.com/zhuyc110/p/5198942.html
Copyright © 2020-2023  润新知