Bir ObservableCollection
, herhangi bir koleksiyon gibi UI'den güncellenebilir. Gerçek fark oldukça basittir:
ObservableCollection<T>
INotifyCollectionChanged
koleksiyon değiştiğinde bildirim sağlayan uygular (tahmin ettiğiniz ^ ^) Güncellendiğinde ciltleme motorunun kullanıcı arayüzünü ObservableCollection
güncellemesini sağlar.
Ancak BindingList<T>
uygular IBindingList
.
IBindingList
koleksiyon 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 PropertyChanged
etkinliği arttırırsa, etkinliğe BindingList
a ListChangedEvent
ile ListChangedType.ItemChanged
ve OldIndex=NewIndex
(bir öğe değiştirildiyse OldIndex=-1
) ile bir yükseltilir . ObservableCollection
öğe bildirimlerini aktarmaz.
Silverlight'ta BindingList
seçenek olarak mevcut olmadığını unutmayın: Ancak ObservableCollection
s ve ICollectionView
(ve IPagedCollectionView
iyi hatırlıyorsam) kullanabilirsiniz.