Что лучше? INotifyPropertyChanged или имеющие отдельные * измененные события? - PullRequest
11 голосов
/ 08 июня 2009

Я разрабатываю новый класс в C #, который имеет несколько свойств. Мои пользователи захотят узнать, когда каждый из них изменится.

Какой лучший выбор? Стиль реализации INotifyPropertyChanged или просто наличие отдельных событий, соответствующих моим свойствам? Или оба?

Ответы [ 2 ]

10 голосов
/ 08 июня 2009

В дальнейшем INotifyPropertyChanged является нормой и имеет гораздо лучшую поддержку в WPF. Кажется, я помню, что BindingList<T> относится только к INotifyPropertyChanged (см. HookPropertyChanged и UnhookPropertyChanged в отражателе).

Это также более эффективно, поскольку пользовательскому интерфейсу требуется только один обработчик событий, а не один на событие - и ваш класс может быть более эффективным, поскольку ему нужно только поле для одного обработчика (вместо одного для свойства или необходимость пройти через EventHandlerList и набор статических ключей)

Старый стиль - это в основном похмелье.

3 голосов
/ 08 июня 2009

Реализация интерфейса INotifyPropertyChanged даст вам дополнительное преимущество, заключающееся в том, что источники привязки автоматически прослушивают изменения, вносимые вами в ваши свойства, и обновляют элементы управления.

Попробуйте сделать это. Создайте класс без интерфейса INotifyPropertyChanged и привяжите его к чему-либо. Например, вы можете привязать одно из его свойств к свойству Text TextBox. Добавьте кнопку, которая изменится, не текст TextBox, а значение соответствующего свойства в экземпляре, который связан с полем. Запустите и нажмите кнопку. Текстовое поле не будет уведомлено об изменении. Если вы затем реализуете INotifyPropertyChanged в классе, пусть установщик свойства уведомит об его изменении через PropertyChanged даже после повторения эксперимента, вы увидите обновление TextBox.

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