当前位置: 首页 > news >正文

WeakReferenceMessenger

1.消息注册

        private void Page_Unload(object sender, RoutedEventArgs e){WeakReferenceMessenger.Default.UnregisterAll(this);}private void RegisterEvent(){WeakReferenceMessenger.Default.Register<EventModel,string>(this,"EquipmentConfigView_PageEvents",OnPageEventsReceived);}private void OnPageEventsReceived(object recipient, EventModel message){PageEvents(message);}private void PageEvents(EventModel model){switch (model.menu_name){case "RefreshGrid":ViewModel.PageIndex = int.Parse(model.param);Search_Click(null, null);break;}}
  • WeakReferenceMessenger.Default:获取全局默认的消息器实例(单例),所有组件共用这个实例收发消息。
  • Register<EventModel, string>:泛型参数说明:
    • 第一个泛型 EventModel:消息的类型(你自定义的消息载体,包含 menu_nameparam 等数据)。
    • 第二个泛型 string:令牌的类型(这里用字符串作为令牌,也可以用其他类型如 enum)。
     
  • 参数 1 this:表示 “谁来接收消息”,这里是当前类的实例(比如某个 View 或 ViewModel)。
  • 参数 2 "EquipmentConfigView_PageEvents":消息令牌,相当于 “消息的唯一标识”。只有发送方用这个令牌发送消息时,当前接收方才会响应;其他令牌的消息会被忽略,避免消息混乱。
  • 参数 3 OnPageEventsReceived:消息接收后的回调方法,消息到达时会执行这个方法。

2.消息发送

 WeakReferenceMessenger.Default.Send(new EventModel { menu_name = "RefreshGrid", param = $"{PageIndex}" },"EquipmentConfigPage_PageEvents");

 

接收方调用 RegisterEvent() 注册消息监听(通常在页面初始化 / 构造函数中执行)。

发送方在需要的时机(比如按钮点击、数据加载完成)调用 Send 发送消息。

WeakReferenceMessenger 会根据 “消息类型 + 令牌” 找到对应的接收方,触发 OnPageEventsReceived 回调。

http://www.jsqmd.com/news/430486/

相关文章:

  • Ai2Psd矢量图层转换:破解设计协作流程断裂的自动化方案 | 提升跨软件协作效率300%
  • 如何通过DamaiHelper实现演唱会门票自动抢购?提升90%成功率的实用指南
  • 2026年口碑好的滚筒磁选机/湿式磁选机热门品牌厂家推荐 - 品牌宣传支持者
  • unrpa:RPA文件提取工具 游戏开发者与玩家的资源解包利器
  • AlistHelper:让Alist管理像使用手机App一样简单
  • 联想游戏本性能解锁工具:Lenovo Legion Toolkit全方位优化指南
  • 蓝牙基础(十一):蓝牙耳机音频编码、传输流程、声音延迟与失真
  • 重新定义二维绘图:LitCAD开源平台如何让设计效率提升300%
  • 2026年靠谱的嵌片不锈钢扎带/不锈钢扎带厂家质量参考评选 - 品牌宣传支持者
  • 本地化语音识别:突破性能瓶颈的终极实践指南
  • Visual Syslog Server:Windows环境下日志集中管理的图形化解决方案
  • Human IL-1β ELISA试剂盒如何解析炎症与抗肿瘤免疫的复杂关联?
  • ViGEmBus虚拟设备驱动:跨平台兼容的游戏控制器解决方案
  • 开源工具Lenovo Legion Toolkit:联想笔记本性能优化与智能管理完全指南
  • WebPlotDigitizer:从图表图像中精准提取数据的高效工具使用指南
  • 模型压缩的新范式:超越剪枝与量化的现代工具链实践
  • 互联网大厂Java面试实战:从核心技术到微服务与AI应用
  • 蓝牙基础(十一):蓝牙耳机音频编码、传输流程、音质影响解析
  • 2026年比较好的写字楼办公设计/主题办公设计精选企业汇总 - 品牌宣传支持者
  • 2026年质量好的铝方通铝天花/喷涂铝天花用户口碑认可厂家 - 品牌宣传支持者
  • 我靠 XinServer 解决了数据建模难题
  • LRC Maker:革新歌词制作的全流程攻略
  • 2026年靠谱的U型铝方通/铝方通铝方管品牌厂商推荐(更新) - 品牌宣传支持者
  • Godot-MCP:革新性AI助手与游戏引擎的无缝整合方案
  • 2026年正规江南汽车/江南专用汽车直销厂家选哪家 - 品牌宣传支持者
  • 2026年靠谱的600600铝扣板/300300铝扣板全方位厂家推荐参考 - 品牌宣传支持者
  • 3步打造零成本家庭娱乐中心:UltraStar Deluxe的颠覆性K歌体验
  • 2026年质量好的乡村民宿设计/民宿设计师好评推荐汇总 - 品牌宣传支持者
  • 2026年热门的外卖纸碗/圆形纸碗厂家选择参考建议 - 品牌宣传支持者
  • iOS图像背景智能移除:开源Swift工具的高效实现方案