Подтвердить что ты не робот

Метаданные переопределения и базовые метаданные должны быть одного типа

Я пытаюсь переопределить метаданные 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

Что я делаю неправильно?

4b9b3361

Ответ 1

Вам нужно использовать FrameworkPropertyMetadata. Все элементы, которые поставляются с WPF, полученные из FrameworkElementDataGrid), используют его в качестве своих метаданных.