Bir ObservableCollection, herhangi bir koleksiyon gibi UI'den güncellenebilir. Gerçek fark oldukça basittir:
ObservableCollection<T>INotifyCollectionChangedkoleksiyon değiştiğinde bildirim sağlayan uygular (tahmin ettiğiniz ^ ^) Güncellendiğinde ciltleme motorunun kullanıcı arayüzünü ObservableCollectiongüncellemesini sağlar.
Ancak BindingList<T>uygular IBindingList.
IBindingListkoleksiyon değişiklikleriyle ilgili bildirimde bulunur, sadece bu değil. Değişikliklere göre yalnızca UI güncellemelerinden çok daha fazla şey sağlamak için UI tarafından kullanılabilen bir dizi işlevsellik sağlar:
- sınıflandırma
- Aranıyor
- Fabrikadan ekleme (AddNew üye fonksiyonu).
- Salt okunur liste (CanEdit özelliği)
Tüm bu işlevler ObservableCollection<T>
Diğer bir fark, BindingListöğeleri uygulandığında öğe değişikliği bildirimlerini aktarmasıdır INotifyPropertyChanged. Bir öğe bir PropertyChangedetkinliği arttırırsa, etkinliğe BindingLista ListChangedEventile ListChangedType.ItemChangedve OldIndex=NewIndex(bir öğe değiştirildiyse OldIndex=-1) ile bir yükseltilir . ObservableCollectionöğe bildirimlerini aktarmaz.
Silverlight'ta BindingListseçenek olarak mevcut olmadığını unutmayın: Ancak ObservableCollections ve ICollectionView(ve IPagedCollectionViewiyi hatırlıyorsam) kullanabilirsiniz.