Sebuah ObservableCollectiondapat diperbarui dari UI persis seperti koleksi apa pun. Perbedaan yang sebenarnya agak langsung:
ObservableCollection<T>mengimplementasikan INotifyCollectionChangedyang memberikan notifikasi ketika koleksi diubah (Anda tebak ^^) Ini memungkinkan mesin pengikat untuk memperbarui UI saat ObservableCollectiondiperbarui.
Namun, BindingList<T>implementasinya IBindingList.
IBindingListmemberikan 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 BindingListrelay pemberitahuan perubahan item saat item diterapkan INotifyPropertyChanged. Jika suatu item memunculkan suatu PropertyChangedevent, maka BindingListakan menerimanya sebuah menimbulkan ListChangedEventdengan ListChangedType.ItemChangeddan OldIndex=NewIndex(jika suatu item diganti, OldIndex=-1). ObservableCollectiontidak menyampaikan pemberitahuan item.
Perhatikan bahwa di Silverlight, BindingListtidak tersedia sebagai opsi: Namun Anda dapat menggunakan ObservableCollections dan ICollectionView(dan IPagedCollectionViewjika saya ingat dengan baik).