ObservableCollection
прилага както INotifyCollectionChanged
, така и INotifyPropertyChanged
.
Разбирам, че добавянията, изтриванията (+ изчистване) и замяната на артикули могат да бъдат уведомявани от потребителите чрез събитието
CollectionChanged
на колекцията и че актуализациите в съществуващите артикули могат да се наблюдават с помощта на артикулите ' събитиеPropertyChanged
ако се внедрят самиINotifyPropertyChanged
.Четох от други, че не можете да се регистрирате в събитието на колекцията
PropertyChanged
, защото е само за четене.
И така, каква е неговата цел, как можем да я използваме?
Коментарите тук и там изглежда объркат дискусията, като намекват, че магията на ObservableCollection
е да внедри и двата интерфейса, позволявайки да бъдете уведомявани както за промени в съдържанието на колекцията, така и за елементите, докато това не е правилно (това се игнорира от много примери, в които колекцията е обвързана със списъчно поле, което се актуализира магически след промяна на съдържанието на елементите, което предполага, че колекцията уведомява списъчното поле).
Всъщност изглежда единственото превъзходство на колекцията е внедряването на INotifyCollectionChanged
. Справянето с промените в свойствата на елементите не изглежда никак по-лесно с ObservableCollection
, отколкото с друга колекция: възможно е само ако елементите имплементират INotifyPropertyChanged
, което може да не правят, и ако потребителят успее да се закачи за това събитие независимо от колекцията.
Това правилно ли е?