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