元数据覆盖和基本元数据必须属于同一类型

时间:2013-08-13 13:04:39

标签: wpf custom-controls metadata

我试图在派生类中覆盖ItemsControl.ItemsSourceProperty的元数据,以便分配我自己的回调:

 public class CustomDataGrid : System.Windows.Controls.DataGrid
 {
    static CustomDataGrid()
    {
        CustomDataGrid.ItemsSourceProperty.OverrideMetadata(typeof(CustomDataGrid), new UIPropertyMetadata(new PropertyChangedCallback(OnItemsSourcePropertyChanged)));
    }

    private static void OnItemsSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {}
 }

我得到了设计师+运行时异常:

Metadata override and base metadata must be of the same type

我做错了什么?

1 个答案:

答案 0 :(得分:29)

您需要使用FrameworkPropertyMetadata。 WPF附带的所有元素都派生自FrameworkElement(和DataGrid),并将其用作元数据。