Событие 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 является хорошим типом, владеющим свойством. Я помню, что у меня была похожая проблема некоторое время назад после копирования / вставки ДП и забыл сменить тип владельца.