- 在xaml中添加 Snackbar 和md消息队列
-
<materialDesign:Snackbar x:Name="Snackbar" Panel.ZIndex="1" MessageQueue="{materialDesign:MessageQueue}" />
- 要引用命名空间
-
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:prism="http://prismlibrary.com/"
-
-
- 新建一个消息类用于继承
-
public class MessageEvent:PubSubEvent<MessageModel> { } public class MessageModel { public string Filter { get; set; } public string Message { get; set; } }
-
- 新建一个对话框接口类,实现注册和发送提示消息
-
/// <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, }); }
-
- 在提示窗口View中把消息添加到消息队列中, IEventAggregator是Prism中用户消息通知的模块类
-
public MainWindow(IEventAggregator aggregator) { InitializeComponent(); aggregator.ResgiterMessage(arg => { Snackbar.MessageQueue.Enqueue(arg.Message); }); }
-
- 在使用模块中发布消息
-
public MainWindowViewModel(IRegionManager regionManager, IEventAggregator aggregator) { this.regionManager = regionManager; //初始化接口 InitInterfaces(); //初始化界面 InitView(); this.EventAggregator = aggregator; EventAggregator.SendMessage("我是提示消息"); }
-
WPF Prism 全局通知
最新推荐文章于 2025-03-15 13:34:32 发布