将 PropertyChangedCallback 添加到基类的只读依赖属性
Posted
技术标签:
【中文标题】将 PropertyChangedCallback 添加到基类的只读依赖属性【英文标题】:Add PropertyChangedCallback to a readonly dependency property of the base class 【发布时间】: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)
【问题讨论】:
docs.microsoft.com/en-us/dotnet/api/… 【参考方案1】:我已经使用DependencyPropertyDescriptor
解决了。
DependencyPropertyDescriptor.FromProperty(IsHighlightedProperty, typeof(MyMenuItem))
?.AddValueChanged(this, (s, e) => OnHighlightChanged(IsHighlighted));
【讨论】:
以上是关于将 PropertyChangedCallback 添加到基类的只读依赖属性的主要内容,如果未能解决你的问题,请参考以下文章