22

我试图在派生类中覆盖 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

我究竟做错了什么 ?

4

1 回答 1

37

你需要使用FrameworkPropertyMetadata. WPF 附带的所有派生自FrameworkElement(并且DataGrid确实)将其用作元数据的元素。

于 2013-08-13T13:55:34.850 回答