百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

WPF 消息传递简明教程(wpf 通知)

liuian 2025-04-08 16:02 37 浏览

WPF 消息传递简明教程

独立观察员 2023 年 4 月 24 日


0、说明

参考:https://www.cnblogs.com/cdaniu/p/16852620.html

使用包:CommunityToolkit.Mvvm(8.1.0)


1、订阅

让需要使用消息的 ViewModel 继承 ObservableRecipient,构造函数中设置 IsActive=true:


重写 OnActivated () 和 OnDeactivated () 方法:

#region 消息处理
/// /// 注册消息接收 /// protected override void OnActivated(){ WeakReferenceMessenger.Default.Register<MainWindowViewModel, MyMessage, string>(this, nameof(MyMessage), OnReceiveMessage);}
/// /// 收到消息时的处理方法/// /// 接收者/// 消息private void OnReceiveMessage(MainWindowViewModel recipient, MyMessage message){ //处理逻辑;}
/// /// 注销消息接收/// protected override void OnDeactivated(){ base.OnDeactivated(); WeakReferenceMessenger.Default.Unregister<MyMessage, string>(this, nameof(MyMessage));}
#endregion


解释:


2、发送消息

var message = new MyMessage(){ //属性赋值,};WeakReferenceMessenger.Default.Send(message, nameof(MyMessage));


3、注意事项

主要用法就是上面两点,还是挺简单的,但是网上的文章却看得人云里雾里的。这一节说一些注意事项。


3.1、消息类型不要混用

消息类应当是每个消息专用的,推荐使用 sealed 标记:


3.2、订阅要在发送之前执行

这一条大家可能会觉得这有什么好提醒的,本来就要这样啊。但是,实际写的时候,还是容易发生执行到发送的逻辑时,订阅的那部分代码实际还没执行,通常就是那个 ViewModel 还没出生呢。不过这个也很好排查出来,一般出现发了消息,但是消息处理方法那里没反应,就是这个问题了。解决方法就是让订阅的对象先生成出来即可,只不过有的时候这样可能没什么道理,大家有更好的方法,欢迎交流。


就说这么多吧,感谢阅读。



原创文章,转载请注明: 转载自 独立观察员 (dlgcy.com)

本文链接地址:[WPF 消息传递简明教程](http://dlgcy.com/toolkit-mvvm-message/)

关注微信公众号 独立观察员博客(DLGCY_BLOG) 第一时间获取最新文章



WPF

WPF 属性变动后的业务处理及恢复原始值的方法

我向 ChatGPT 讨教了一下 WPF 中的行为 Behavior

使用通用附加属性来减少 WPF 元素自定义样式的多余代码

几十款 WPF 控件 - UI 库,总有一款适合你

WPF 用户控件分享之边上带输入框的圆圈

分享一个 WPF 气泡弹框

WPF 表单验证之 INotifyDataErrorlnfo 接口的使用示例

[翻译] WPF 中用户控件 DataContext/Binding 和依赖属性的问题

OxyPlot 导出图片及 WPF 元素导出为图片的方法

让 WPF 的 RadioButton 支持再次点击取消选中的功能

WPF DataGrid 如何将被选中行带到视野中

WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题

WPF DataGrid 通过自定义表头模拟首行固定

WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换

【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF

WPF 使用 Expression Design 画图导出及使用 Path 画图

WPF MVVM 弹框之等待框

解决 WPF 绑定集合后数据变动界面却不更新的问题(使用 ObservableCollection)

WPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面

真WPF 按钮拖动和调整大小

WPF MVVM 模式下的弹窗

WPF 让一组 Button 实现 RadioButton 的当前样式效果

WPF 原生绑定和命令功能使用指南

WPF 用户控件自定义依赖属性MVVM 模式下的使用备忘

在WPF的MVVM模式中使用OCX组件


第三方库使用

WPF 依赖注入之 Microsoft.Extensions.DependencyInjection

WPF 表格控件 ReoGrid 的简单使用

OxyPlot.WPF 公共属性一览

OxyPlot.Wpf 图表控件使用备忘


相关推荐

win8手机下载安装(win8安卓)

在电脑上面就可以下载,打开浏览器搜索windous8系统会出现一些下拉选择,选择第一条或者选择有官网字样的,就直接有下载按钮,然后点击下载就可以了关闭应用自动更新第一步、在系统中找到应用商店。第二...

台式电脑显卡怎么升级(台式电脑显卡升级方案)

一般情况下,建议到产品(您的显卡)品牌官网上去下载相应最新的驱动,这虽然并不能保证一定就是显卡最新的驱动,但相对于稳定性来说是首选。如果是高级玩家,追求更新、更好的性能发挥,可以利用驱动精灵一类的驱动...

u盘数据丢失的原因(u盘数据丢失的原因有哪些)

U盘出现了损坏造成的磁道出现了损坏。这个U盘的磁道是最容易损坏的,有的时候你不知道怎么碰到它,它就有数据丢失了就无法显示这样的情况,你可以在电脑上进行修复,首先你点击U盘右键找到属性选择修复,这样把...

window7下载哪个版本的ie(windows7用哪个版本的ie浏览器)

WIN7系统自带的IE浏览器是8.0版本的。IE全称InternetExplorer,是美国微软公司推出的一款网页浏览器。IE8扩展的新功能有:1、Activities(活动内容服务)。用户可以从网页...

服务器回收(上海服务器回收)

回收服务器内存后,首先应该彻底清除内存存储的所有数据和敏感信息,然后进行分类处理。如果内存仍然有效,可以进行检测、测试和修复后再重新使用。如果内存已损坏或过期,应该妥善处理,比如通过专业的硬件回收公司...

戴尔官网入口学生通道(戴尔学生渠道)

戴尔官网地址如下,在浏览器输入就可以加入了。DELL官方网站http://www.dell.com.cn/DELL官方旗舰店(天猫)http://dell.tmall.com/DELL官方旗舰店(京东...

win7旗舰版激活码病毒(win7旗舰版激活密钥 永久激活码)

激活和破解工具会修改一些系统文件或数据,一般都会被杀毒软件识别为木马。而且现在网上的windows和office激活工具有的确实是带有木马的,最好去值得信任的网站或者论坛下载。

破解版office2019百度云(破解版office2016百度云)
  • 破解版office2019百度云(破解版office2016百度云)
  • 破解版office2019百度云(破解版office2016百度云)
  • 破解版office2019百度云(破解版office2016百度云)
  • 破解版office2019百度云(破解版office2016百度云)
421文档 全文免费阅读(421小说在线阅读)

根据1,我回答如下:1,"421文档"是在4月21日发布的。2,"421文档"作为一份重要的文件,通常在特定日期或时间点发布,供相关人员参考和使用。3,除了发布日...

阿里旺旺网页版登录入口(阿里旺旺卖家版官网)

手机淘宝的旺旺在打开商品后,会看到左下角有个旺旺的图标,点击就可以联系了。  阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合在一起的一个新品牌。它是淘宝和阿里巴巴为商人量身定做的免费网上商务沟通软件,...

网易电脑版登录入口(main.163网易电脑版登录入口)

http://mail.163.com步骤一:输入邮箱官网网址http://mail.163.com/打开163邮箱登录入口界面。步骤二:输入已有的邮箱账号、密码,点击登录即可。步骤三:如果没有邮箱账...

qq截图快捷键不能用(qq快捷截图不能使用)

笔记本上面的PrtSC能用么,是不是需要用Fn+这个按键才能截屏呀。有些机器在bios下有Fn快捷键设置,你需要把这个功能键开启或者关闭后才能单独点击使用。或者你使用Fn+PrtSC在试试,另外,何必...

大地影视中文第二页的背景故事

大地影院通常会有明显的入口标识,你可以根据影院外部的建筑结构和指示牌来找到入口。一般来说,大地影院的入口可能位于建筑的主立面或者侧面,有时也可能位于地下停车场或者商场内部。当你到达影院所在的建筑时,可...

win10共享打印机需要密码(win10共享打印机需要密码吗)

共享打印机需要输入用户名和密码,该如何操作,下面给大家来介绍下。1、首先打开电脑的控制面板,点击管理工具。2、然后在打开的管理工具窗口中,点击本地安全策略。3、接着在打开的页面中,点击本地策略。4、然...

系统引导启动项怎么设置(系统引导按哪个键)

如果您想在计算机启动时添加系统启动引导选项,可以按照以下步骤进行操作:1.打开“运行”窗口,可以通过快捷键Win+R打开“运行”窗口。2.在“运行”窗口中输入“msconfig”命令,并点击“...