Событие WPF DependencyProperty до изменения содержимого

Сначала я объясню контекст проблемы, потому что вы, возможно, сможете указать мне лучшее направление.

Мне нужно реализовать систему, похожую на отмену-повтор, на объекте. Объект имеет ряд свойств зависимости. Некоторые типа double, int, string, но некоторые также имеют тип DependencyObject. Мне нужно сохранить значение свойства до его изменения, и для этого я добавил CoerceValueCallback.

public static readonly DependencyProperty MyBackgroundProperty =
        DependencyProperty.Register("MyBackground", typeof(MyCustomizableBackground),
            typeof(MyComponent), new UIPropertyMetadata(default(MyCustomizableBackground), null, new CoerceValueCallback(OnPropertyChanging)));

В OnPropertyChanging я сохраняю значение до его изменения. MyCustomizableBackground - это объект DependencyObject, который также имеет некоторые свойства зависимостей.

Проблема в том, что в этом случае, когда у меня есть пользовательский объект в качестве свойства, метод OnPropertyChanging не запускается, но когда у меня общий тип, он запускается.

Позже редактирование: я понял, что часть моего вопроса была довольно неоднозначной, и я задал здесь отдельный вопрос. Для первой части проблемы, Жюльен указал мне в лучшем направлении.

1 ответ

Решение

Обратный вызов измененного свойства является вторым параметром конструктора в вашем случае, а не третьим, как вы использовали, который является обратным вызовом приведения значения.

Изменить: в ответ на ваш комментарий, дважды проверьте, что MyComponent является хорошим типом, владеющим свойством. Я помню, что у меня была похожая проблема некоторое время назад после копирования / вставки ДП и забыл сменить тип владельца.

Другие вопросы по тегам