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

如何在派生类中捕获ObservableProperty属性的Changed事件?

在派生类中捕获ObservableProperty的属性变更事件

你可以通过实现匹配基类生成的partial方法签名来捕获属性变更事件,具体实现如下:

核心逻辑

CommunityToolkit.Mvvm的[ObservableProperty]特性会自动在基类中生成一个受保护的partial方法,命名规则为On{PropertyName}Changed。派生类只需实现同名且签名一致的partial方法,就能监听属性的变化。

正确代码示例

注意:新版本(8.0+)的Toolkit生成的变更方法包含旧值和新值两个参数,需严格匹配签名:

using CommunityToolkit.Mvvm.ComponentModel;

partial class PersonVM : ObservableObject
{
    [ObservableProperty]
    private bool isSelected = false;
}

class TeacherVM : PersonVM
{
    // 完全匹配基类生成的方法签名
    protected override partial void OnIsSelectedChanged(bool oldValue, bool newValue)
    {
        // 可选:调用基类的默认实现(若基类有自定义逻辑)
        base.OnIsSelectedChanged(oldValue, newValue);
        
        // 派生类自定义处理逻辑
        if (newValue)
        {
            // 选中后的操作
        }
        else
        {
            // 取消选中后的操作
        }
    }
}

关键注意点

  1. 签名必须严格匹配:方法名、参数类型和顺序不能出错。旧版本Toolkit可能仅生成单参数(仅新值)的方法,但建议升级到最新版本使用双参数签名,以获取完整的变更信息。
  2. 访问修饰符:保持protected与基类生成的方法一致,同时可添加override(生成的方法默认是virtual,支持重写)。
  3. 基类逻辑继承:如果基类已实现该partial方法的部分逻辑,记得调用base.OnIsSelectedChanged(...)以保留原有行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:20:18