Отслеживание изменений значений свойств зависимостей на глобальном уровне - PullRequest
0 голосов
/ 06 июля 2010

У меня есть несколько элементов управления в моем приложении (которые пользователь может добавить на холст), каждый из которых имеет различные свойства (в основном свойства зависимости). Пользователь может изменять свои свойства через сетку свойств (например, цвет, текст и т. Д.).

У меня реализована функция сохранения, поэтому, если пользователь вносит какие-либо изменения в canvas, мы просим его сохранить документ перед отъездом. В настоящее время я отслеживаю операции добавления / удаления / изменения размера (изменение флага IsChanged на true). Я также хочу отслеживать любые изменения свойств, сделанные пользователем, например, если он меняет цвет элемента управления через propertygrid.

Одно простое решение - обработать PropertyChangedCallback для каждого объекта и установить соответствующий флаг. Проблема в том, что мне придется писать PropertyChangedCallback для каждого объекта в каждом элементе управления, и в то же время мне нужно следить за тем, чтобы каждый добавленный объект делал то же самое.

Мой вопрос: Есть ли другой лучший способ отслеживания изменений свойств, скажем, в каком-то глобальном месте?

1 Ответ

1 голос
/ 06 июля 2010

Если ваши объекты / классы являются DependencyObjects, вы можете создать свой собственный «базовый класс», производный от DependencyObject, который переопределяет OnPropertyChanged:

http://msdn.microsoft.com/en-us/library/system.windows.dependencyobject.onpropertychanged.aspx

InВ реализации вы можете зарегистрировать, что объект был изменен в каком-то одноэлементном или связанном с ним классе менеджера отслеживания изменений, а затем вызвать base.OnPropertyChanged.

Затем изменить все ваши объекты, чтобы реализовать этот новый класс, а не DependencyObject и когда какие-либо свойстваизменить ваш код будет вызван.

Надеюсь, это поможет!

...