WPF覆盖依赖项属性metdata无法正常工作

时间:2014-09-24 20:47:11

标签: c# .net wpf

我需要监视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'。“

1 个答案:

答案 0 :(得分:5)

两个错误:

  1. OverrideMetadata的第一个参数必须是您的类型。

  2. 第二个参数的类型必须与基本类型相同。

    TopmostProperty.OverrideMetadata(
        typeof(MainWindow),
        new FrameworkPropertyMetadata(Changed));
    
  3. (Bonus)如果您只需要更改通知,则don't need to override metadata