将 PropertyChangedCallback 添加到基础 class 的只读依赖项 属性

Add PropertyChangedCallback to a readonly dependency property of the base class

我需要将 属性 更改的回调方法注册到菜单项的 IsHighlighted 属性。
但是在执行时我得到一个异常,表明 IsHighlighted 被注册为只读。

添加回调方法有什么想法,或者是否有其他方法来检查 属性 变化?

public class MyMenuItem : MenuItem
{
    static MyMenuItem()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(MyMenuItem),
            new FrameworkPropertyMetadata(typeof(MyMenuItem)));
        
        /* IsHighlighted was registered as readonly and is not possible 
        override metadata without an authorization key. */
        IsHighlightedProperty.OverrideMetadata(typeof(MyMenuItem),
            new FrameworkPropertyMetadata(false, new PropertyChangedCallback(OnIsHighlightedChanged)));
    }

    private static void OnIsHighlightedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {

    }
}

我已经使用 DependencyPropertyDescriptor 解决了。

DependencyPropertyDescriptor.FromProperty(IsHighlightedProperty, typeof(MyMenuItem))
    ?.AddValueChanged(this, (s, e) => OnHighlightChanged(IsHighlighted));