我试图在派生类中覆盖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
我做错了什么?
答案 0 :(得分:29)
您需要使用FrameworkPropertyMetadata
。 WPF附带的所有元素都派生自FrameworkElement
(和DataGrid
),并将其用作元数据。