WPF Prism 全局通知

本文介绍了如何在XAML中添加Snackbar消息队列,并结合Prism库实现消息提示功能。首先引入相关命名空间,然后创建消息类和对话框接口,接着在提示窗口View中注册消息并将其添加到消息队列,最后在使用模块中发布提示消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 在xaml中添加 Snackbar 和md消息队列 
    1.     <materialDesign:Snackbar
                          x:Name="Snackbar"
                          Panel.ZIndex="1"
                          MessageQueue="{materialDesign:MessageQueue}" />

    2. 要引用命名空间
      1. xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
        xmlns:prism="http://prismlibrary.com/"

  2. 新建一个消息类用于继承
    1.  public class MessageEvent:PubSubEvent<MessageModel>
          {
             
          }
          public class MessageModel
          {
              public string Filter { get; set; }
              public string Message { get; set; }
          }
  3. 新建一个对话框接口类,实现注册和发送提示消息
    1.         /// <summary>
              /// 注册提示消息 
              /// </summary>
              /// <param name="aggregator"></param>
              /// <param name="action"></param>
              public static void ResgiterMessage(this IEventAggregator aggregator,
                  Action<MessageModel> action, string filterName = "Main")
              {
                  aggregator.GetEvent<MessageEvent>().Subscribe(action,
                      ThreadOption.PublisherThread, true, (m) =>
                      {
                          return m.Filter.Equals(filterName);
                      });
              }
      
              /// <summary>
              /// 发送提示消息
              /// </summary>
              /// <param name="aggregator"></param>
              /// <param name="message"></param>
              public static void SendMessage(this IEventAggregator aggregator, string message, string filterName = "Main")
              {
                  aggregator.GetEvent<MessageEvent>().Publish(new MessageModel()
                  {
                      Filter = filterName,
                      Message = message,
                  });
              }

  4. 在提示窗口View中把消息添加到消息队列中, IEventAggregator是Prism中用户消息通知的模块类
    1.         public MainWindow(IEventAggregator aggregator)
              {
                  InitializeComponent();
      
                  aggregator.ResgiterMessage(arg =>
                  {
                      Snackbar.MessageQueue.Enqueue(arg.Message);
                  });
              }
  5. 在使用模块中发布消息
    1.         public MainWindowViewModel(IRegionManager regionManager, IEventAggregator aggregator)
              {
                  this.regionManager = regionManager;
                  //初始化接口
                  InitInterfaces();
                  //初始化界面
                  InitView();
      
                  this.EventAggregator = aggregator;
                  EventAggregator.SendMessage("我是提示消息");
              }
      
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值