Сначала я объясню контекст проблемы, потому что вы можете указать мне в лучшем направлении.Событие 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 не запускается, но когда у меня есть общий тип, он запускается.
Позже редактирование: я понял, что часть моего вопроса была довольно неоднозначной, и я задал отдельный вопрос here. Для первой части проблемы Жюльен указал мне в лучшем направлении.
Да, вы правы, имя моего метода неуместно, но я хочу сохранить значение перед изменением. Поэтому я использую CoerceValueCallback. Я изменил имя метода. – morsanu
Да, но свойствоChanged дает параметры OldValue и NewValue в параметрах, так что это именно то, что вам нужно. Призыв к Coerce не означает, что значение изменилось. –
Вы снова правы, вы должны были объяснить это с самого начала. Но проблема сохраняется, изменение пользовательского свойства объекта не вызывает метод. – morsanu