Сначала я объясню контекст проблемы, потому что вы, возможно, сможете указать мне лучшее направление.
Мне нужно внедрить систему, аналогичную отмене и восстановлению объекта. Объект имеет ряд свойств зависимости. Некоторые типа 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 не запускается, но когда у меня общий тип, он запускается.
Позднее редактирование: я понял, что часть моего вопроса была довольно неоднозначной, и я задал отдельный вопрос здесь . Для первой части проблемы Жюльен указал мне лучшее направление.