Sebuah ObservableCollection
dapat diperbarui dari UI persis seperti koleksi apa pun. Perbedaan yang sebenarnya agak langsung:
ObservableCollection<T>
mengimplementasikan INotifyCollectionChanged
yang memberikan notifikasi ketika koleksi diubah (Anda tebak ^^) Ini memungkinkan mesin pengikat untuk memperbarui UI saat ObservableCollection
diperbarui.
Namun, BindingList<T>
implementasinya IBindingList
.
IBindingList
memberikan pemberitahuan tentang perubahan koleksi, tetapi tidak hanya itu. Ini menyediakan sejumlah fungsionalitas yang dapat digunakan oleh UI untuk menyediakan lebih banyak hal daripada hanya pembaruan UI menurut perubahan, seperti:
- Penyortiran
- Mencari
- Tambah melalui pabrik (fungsi anggota AddNew).
- Daftar hanya baca (properti CanEdit)
Semua fungsi ini tidak tersedia di ObservableCollection<T>
Perbedaan lainnya adalah BindingList
relay pemberitahuan perubahan item saat item diterapkan INotifyPropertyChanged
. Jika suatu item memunculkan suatu PropertyChanged
event, maka BindingList
akan menerimanya sebuah menimbulkan ListChangedEvent
dengan ListChangedType.ItemChanged
dan OldIndex=NewIndex
(jika suatu item diganti, OldIndex=-1
). ObservableCollection
tidak menyampaikan pemberitahuan item.
Perhatikan bahwa di Silverlight, BindingList
tidak tersedia sebagai opsi: Namun Anda dapat menggunakan ObservableCollection
s dan ICollectionView
(dan IPagedCollectionView
jika saya ingat dengan baik).