Оновлення 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
не є опцією: однак ви можете використовувати ObservableCollection
s і ICollectionView
(і IPagedCollectionView
якщо я добре пам’ятаю).