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

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

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

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 图表控件使用备忘


相关推荐

优酷视频免费下载并安装(下载优酷视频安装)

很高兴回答你的问题!1.首先在电脑上打开优酷。2.点击右上角的三道杠点击“设置”。3.点击“转码设置”。4.将转码格式改成mp4。5.打开要下载的视频,点击下载按钮。6.勾选“下载完后自动转码”。优酷...

u盘变成系统盘怎么变回来(u盘变成系统盘还能用吗)
  • u盘变成系统盘怎么变回来(u盘变成系统盘还能用吗)
  • u盘变成系统盘怎么变回来(u盘变成系统盘还能用吗)
  • u盘变成系统盘怎么变回来(u盘变成系统盘还能用吗)
  • u盘变成系统盘怎么变回来(u盘变成系统盘还能用吗)
360浏览器官网电脑版(360浏览器 官网)

网页版的入口,你的意思是说如何打开嘛?它安装完了之后。就会在桌面上出现一个图标,你直接点击不就可以了吗?1、首先打开电脑浏览器。2、然后在浏览器上搜索搜索360网盘。3、然后就可以看到网页版登录入口。...

服务器重装系统(服务器重装系统按什么键)

进入服务器之后选择清除系统重新安装即可如果确实忘记了服务器电脑密码,可以尝试使用重装系统的方式来解决问题。首先需要准备一个可启动的系统安装盘或U盘,然后在服务器开机时进入BIOS设置,将启动设备设为安...

win11下载一半可以取消吗(win11下载两次)

1.首先回到桌面,右键单击鼠标开始win徽标,右击菜单点击运行,或者直接WIN+R组合键。  2.跳出运行对话框,输入services.msc并单击OK按钮。3.转到服务列表,找到Windowsup...

windows7怎么进入bios(windows7怎么进入管理员界面)

1、开机时按F2键或者DEL键,进入BIOS系统;注:机器型号不同,进入BIOS的按键可能有所不同,具体可参看左下角的屏幕提示。2、选择Security选项卡,选择SecureBoot,按回车键——...

截图快捷键ctrl加什么电脑截图

ctrl+alt+a是qq的截图快捷键;台式电脑还可以使用的截图方式:方法一:按PrtScSysRq键,然后在文档中右击选择粘贴就可以看见截图,将截图另存为即可获得截图;方法二:按win+PrtScS...

手机怎样提高网速(手机怎样提高网速华为)
  • 手机怎样提高网速(手机怎样提高网速华为)
  • 手机怎样提高网速(手机怎样提高网速华为)
  • 手机怎样提高网速(手机怎样提高网速华为)
  • 手机怎样提高网速(手机怎样提高网速华为)
ios官方网站(苏州晶体公司ios官方网站)
ios官方网站(苏州晶体公司ios官方网站)

方法/步骤1,点击下方的【safari】图标。2,搜索苹果官网,点击进入3,进入苹果的页面,点击左上角二道横4.查询苹果的相关产品。1.打开苹果官网:http://www.apple.com.cn/并点击页面右上角的技术支持选项。2.选择您...

2025-11-10 09:55 liuian

手机突然无法识别u盘(手机突然无法识别u盘怎么办呢)

1、手机不支持OTG功能,所以将U盘连接到手机后,手机无法识别U盘的内容,因此显示不了;这种情况只能换台支持OTG功能的手机来连接U盘才行。2、手机支持OTG功能,但是使用的OTG线质量有问题导致无...

windows10更新不了一直重试(window10一直更新失败)

可能是以下几个原因导致的:1.可能是硬盘剩余空间太少或者碎片太多,队伍用文件进行清理并清理碎片即可。2.可能是windows10版本不支持软件进行运行。3.没有权限,打开相应的权限后重启即可情况说明你...

联想笔记本怎么进入安全模式
联想笔记本怎么进入安全模式

联想笔记本电脑进入安全模式的方法如下:1、第一步,按下【windows+R】,打开【运行】,输入【msconfig】后,点击【确定】。2、第二步,打开【系统配置】窗口后,点击【引导】。3、第三步,勾选【安全引导】后,选择需要的安全模式,通常...

2025-11-10 08:05 liuian

winxp升级包下载(xp 升级)

题主你好,XP系统要升级成WIN7很简单,方法如下:1,下载win7系统iso镜像到本地硬盘,右键使用WinRAR等工具解压出来2,将最大的win7.gho文件和Onekeyghost工具放到同一目...

windows 7电脑配置要求(windows7电脑配置要求)

官方推荐最低配置:处理器:1GHz32位或者64位处理器内存:1GB及以上显卡:支持DirectX9128M及以上(开启AERO效果)硬盘空间:32位16G以上(主分区,NTFS格式)...

ie主页被360锁定不能修改(ie浏览器首页被锁定360导航怎么取消百度知道)

法一、点击开始,运行,键入msconfig点击“确定”,在弹出的窗口中切换到“启动”选项卡,禁用可疑程序启动项。法二、1、打开360安全卫士进入“更多”;2、主页防护;3、在打开的对话框中进行设...