Как назначить обработчик события PropertyChanged владельцу ObservableCollection

Мне нужно обработать событие PropertyChanged элемента в ObservableCollection внутри владельца ObservableCollection. Должен быть способ более элегантный, чем:

ObservableCollection(MyViewModel) myViewModels = new ObservableCollection<MyViewModel>();
LoadMyViewModels(myViewModels); // populates the collection
foreach (MyViewModel myViewModel in myViewModels)
{
    myViewModel.PropertyChanged += PropertyChangedEventHandler(MyViewModelPropertyChanged);
}

Я хотел бы передать обработчик событий MyViewModelPropertyChanged в LoadMyViewModels, чтобы мне не приходилось дважды просматривать коллекцию (один раз при загрузке и один раз при назначении события).

MyViewModelPropertyChanged устанавливает свойства в содержащем представлении, которые отражаются в пользовательском интерфейсе (коллекция привязана к TreeView, и мне нужно включить / отключить поля в пользовательском интерфейсе, в зависимости от того, был ли выбран элемент).

Я просмотрел большинство, если не все процитированные сообщения, но я немного растерялся.

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

Спасибо.


person Seth Abady    schedule 20.09.2012    source источник
comment
+1 Я тоже всегда так поступал, буду интересоваться любыми отзывами, которые вы здесь получите.   -  person Dutts    schedule 21.09.2012
comment
Можете ли вы объяснить, почему вы не хотите дважды проходить коллекцию? Это просто проблема избыточности?   -  person Enigmativity    schedule 21.09.2012
comment
На самом деле это не проблема избыточности, я просто хочу посмотреть, есть ли более элегантный способ. Выше работает нормально.   -  person Seth Abady    schedule 21.09.2012


Ответы (1)


BindingList может дать вам то, что вам нужно ...

BindingList передает уведомления об изменении элемента, когда его элементы реализуют INotifyPropertyChanged.

person Pete Martin    schedule 22.01.2013