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

MAUI中WeakReferenceMessenger替代MessagingCenter的等效用法咨询

MAUI WeakReferenceMessenger 替代 MessagingCenter 示例及说明

等效代码实现

WeakReferenceMessenger采用强类型消息机制,替代MessagingCenter的字符串键,需先定义对应消息类:

1. 定义强类型消息类

// 自定义消息类,替代原MessagingCenter中的"modechanged"字符串键
public class ModeChangedMessage
{
    // 保存发送方实例(可选,根据需求决定是否保留)
    public ModePage Sender { get; }

    public ModeChangedMessage(ModePage sender)
    {
        Sender = sender;
    }
}

2. 发送消息(替代MessagingCenter.Send)

// 通过WeakReferenceMessenger发送消息
WeakReferenceMessenger.Default.Send(new ModeChangedMessage(this));

3. 订阅消息(替代MessagingCenter.Subscribe)

// 订阅ModeChangedMessage类型的消息
WeakReferenceMessenger.Default.Register<ModeChangedMessage>(this, (recipient, message) =>
{
    // 执行原有的SetMode逻辑,可通过message.Sender获取发送方
    SetMode();
});

可选:取消订阅

若需要显式取消订阅(比如页面销毁时),可调用:

WeakReferenceMessenger.Default.Unregister<ModeChangedMessage>(this);

关于"键"的传递与订阅说明

在WeakReferenceMessenger中没有单独的字符串键参数,它通过消息的类型(如ModeChangedMessage)来区分不同的消息,相当于用类型替代了MessagingCenter中的字符串键。

如果需要区分同类型但不同场景的消息,可以:

  • 给消息类添加标识属性(比如public string Tag { get; }),订阅时在回调中判断标识
  • 定义不同的消息子类(比如ModeChangedForSettingMessage、ModeChangedForDisplayMessage)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:56:09