我需要监视WPF窗口上最顶层的属性值更改.我写的是这样的:
static MainWindow()
{
TopmostProperty.OverrideMetadata(typeof(Window), new PropertyMetadata(new PropertyChangedCallback(Changed)));
}
public MainWindow()
{
InitializeComponent();
}
private static void Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个例外:他调用类型'WpfApplication4.MainWindow'上的构造函数,它与指定的绑定约束相匹配,引发了一个异常.行号'4'和行位置'9'."
两个错误:
第一个参数OverrideMetadata必须是你的类型.
第二个参数的类型必须与基本类型中的相同.
TopmostProperty.OverrideMetadata(
typeof(MainWindow),
new FrameworkPropertyMetadata(Changed));
Run Code Online (Sandbox Code Playgroud)(额外奖励)如果您只需要更改通知,则无需覆盖元数据.