Событие WPF DependencyProperty до изменения содержимого - PullRequest
1 голос
/ 17 мая 2010

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

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

1 голос
/ 17 мая 2010

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

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

...