Оновлення ObservableCollectionможна користуватися інтерфейсом користувача точно так само, як і будь-яку колекцію. Справжня різниця досить проста:
ObservableCollection<T>Інструменти, INotifyCollectionChangedякі надають сповіщення про зміну колекції (ви здогадалися ^ ^) Це дозволяє примусовому двигуну оновити інтерфейс користувача, коли ObservableCollectionоновлення оновлено.
Однак BindingList<T>знаряддя IBindingList.
IBindingListнадає повідомлення про зміни колекції, але не тільки це. Він надає цілу купу функціональних можливостей, за допомогою яких інтерфейс може використовувати набагато більше речей, ніж лише оновлення інтерфейсу користувача відповідно до змін, наприклад:
- Сортування
- Пошук
- Додавання через завод (функція члена AddNew).
- Читайте лише список (властивість CanEdit)
Усі ці функції недоступні в ObservableCollection<T>
Ще одна відмінність полягає в тому, що BindingListретрансляції повідомлень про зміну елемента коли його елементи реалізуються INotifyPropertyChanged. Якщо елемент викликає PropertyChangedподію, BindingListвін отримає його рейз ListChangedEventз ListChangedType.ItemChangedі OldIndex=NewIndex(якщо елемент було замінено, OldIndex=-1). ObservableCollectionне передає сповіщення про елементи
Зауважте, що в Silverlight BindingListне є опцією: однак ви можете використовувати ObservableCollections і ICollectionView(і IPagedCollectionViewякщо я добре пам’ятаю).