You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVVM Toolkit消息接收器未触发问题排查求助

消息未被接收的可能原因
  • MainVM未完成信使注册
    虽然MainVM继承了ObservableRecipient并实现了IRecipient<SaveMessage>,但ObservableRecipient默认不会自动注册到信使,需要手动启用:

    • 确保在MainVM的构造函数中设置IsActive = true,触发自动注册逻辑:
      public MainVM()
      {
          IsActive = true; // 开启自动注册
      }
      
    • 或者手动调用注册方法:
      public MainVM()
      {
          WeakReferenceMessenger.Default.Register<SaveMessage>(this);
      }
      
  • MainVM实例被垃圾回收
    WeakReferenceMessenger使用弱引用持有接收者,如果MainVM的实例没有被强引用持有(比如未绑定到UI的DataContext、无其他对象引用),会被GC回收,导致无法接收消息。需要确保MainVM实例在消息发送时仍然存活。

  • 消息类型不匹配
    检查SaveMessage的类型是否完全一致:

    • 确认发送和接收端的SaveMessage是同一个类,没有命名空间差异、重复定义的情况;
    • 如果SaveMessage是内部类(internal),要确保发送和接收端在同一个程序集内,否则无法识别类型。
  • ObservableRecipient的注册逻辑被覆盖
    如果MainVM重写了ObservableRecipient的OnActivated或OnDeactivated方法,需要确保正确调用基类方法,避免取消注册逻辑:

    protected override void OnActivated()
    {
        base.OnActivated(); // 必须调用基类方法以完成注册
        // 自定义逻辑
    }
    

内容的提问来源于stack exchange,提问作者AntiMatter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:13:03