我需要监视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();
}
但是我得到了这个例外: 他调用类型'WpfApplication4.MainWindow'上与指定绑定约束匹配的构造函数引发异常。行号'4'和行位置'9'。“
答案 0 :(得分:5)
两个错误:
OverrideMetadata
的第一个参数必须是您的类型。
第二个参数的类型必须与基本类型相同。
TopmostProperty.OverrideMetadata(
typeof(MainWindow),
new FrameworkPropertyMetadata(Changed));
(Bonus)如果您只需要更改通知,则don't need to override metadata。