Следите за изменениями в дереве объектов - PullRequest
1 голос
/ 10 ноября 2010

Мое приложение WPF показывает дерево объектов, имеющих некоторые свойства.Эти свойства могут быть изменены из пользовательского интерфейса через привязки данных.Сами объекты могут быть добавлены или удалены.Ничего особенного.

Вопрос в следующем: Каков наилучший способ узнать об изменениях где-то в дереве объектов?

Идеи, рассмотренные до сих пор:

  • Создайте статический метод, который будет вызываться каждым объектом при его изменении
  • Создайте статическое событие для каждого типа объекта и прослушайте его
  • Реализуйте INotifyPropertyChanged для каждого объекта и дайте им всем уведомлятьих родители об изменениях, чтобы я мог слушать одно событие в корне дерева объектов
  • Прослушивать события из элементов управления, таких как TextChanged, Checked и т. д.

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

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

INotifyPropertyChanged, вероятно, является наилучшим способом, так как он позволит вам получать уведомления об изменениях с любого корневого узла.Думаю, это также будет зависеть от того, насколько сложны ваши типы и на какие изменения вы хотите реагировать?

0 голосов
/ 16 ноября 2010

В случае, если кому-то когда-нибудь будет интересно, я в конечном итоге подклассифицировал все свои объекты в дереве от общего предка, ответственного за отслеживание состояния IsDirty и продвижение его вверх и вниз по дереву объектов. Я имею в виду, что если какой-то объект помечен как грязный , то все его родители тоже считаются грязными. И да, я реализовал INotifyPropertyChanged в этом общем суперклассе, чтобы быть в курсе изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...