【问题标题】:Add PropertyChangedCallback to a readonly dependency property of the base class将 PropertyChangedCallback 添加到基类的只读依赖属性
【发布时间】:2021-03-10 15:25:50
【问题描述】:

我需要将属性更改的回调方法注册到菜单项的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)
    {

    }
}

【问题讨论】:

标签: c# wpf dependency-properties readonly inotifypropertychanged


【解决方案1】:

我已经使用DependencyPropertyDescriptor解决了。

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

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 2013-05-25
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2012-12-25
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多