C# WPF覆盖依赖项属性metdata不工作

C# WPF覆盖依赖项属性metdata不工作,c#,.net,wpf,C#,.net,Wpf,我需要监视WPF窗口上最顶层的propertyvalue更改。我在写这样的东西: static MainWindow() { TopmostProperty.OverrideMetadata(typeof(Window), new PropertyMetadata(new PropertyChangedCallback(Changed))); } public MainWindow() {

我需要监视WPF窗口上最顶层的propertyvalue更改。我在写这样的东西:

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”。“

两个错误:

  • OverrideMetadata
    的第一个参数必须是您的类型

  • 第二个参数的类型必须与基类型中的类型相同

    TopmostProperty.OverrideMetadata(
        typeof(MainWindow),
        new FrameworkPropertyMetadata(Changed));
    
  • (奖金)如果您只需要更改通知,您将获得奖励

  • 两个错误:

  • OverrideMetadata
    的第一个参数必须是您的类型

  • 第二个参数的类型必须与基类型中的类型相同

    TopmostProperty.OverrideMetadata(
        typeof(MainWindow),
        new FrameworkPropertyMetadata(Changed));
    
  • (奖金)如果您只需要更改通知,您将获得奖励


  • 阅读InnerException。您编写了显式抛出异常的代码。当它完全按照您的要求执行时,为什么您会感到惊讶?阅读InnerException。您编写了显式抛出异常的代码。当它完全按照您的要求执行时,为什么您会感到惊讶?我不知道#2-它是否有文档记录?@AdiLester See:
    对于现有属性(AddOwner或OverrideMetadata调用),您应该始终使用原始注册使用的元数据类型进行重写
    。我不知道#2-它在任何地方都有文档记录吗?@AdiLester请参阅:
    对于现有属性(AddOwner或OverrideMetadata调用),应始终使用原始注册使用的元数据类型进行覆盖