ObservableCollectionสามารถอัปเดตจาก UI เหมือนกับคอลเลกชันใด ๆ ความแตกต่างที่แท้จริงค่อนข้างตรงไปตรงมา:
ObservableCollection<T>ใช้เครื่องมือINotifyCollectionChangedที่ให้การแจ้งเตือนเมื่อมีการเปลี่ยนแปลงคอลเลกชัน (คุณเดาได้ว่า ^^) จะช่วยให้เอ็นจินการเชื่อมโยงปรับปรุง UI เมื่อObservableCollectionมีการอัปเดต
อย่างไรก็ตามการดำเนินการBindingList<T>IBindingList
IBindingListให้การแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงการรวบรวม แต่ไม่เพียงแค่นั้น มันมีฟังก์ชั่นมากมายที่ UI สามารถใช้เพื่อมอบสิ่งต่าง ๆ ได้มากกว่าการอัปเดต UI ตามการเปลี่ยนแปลงเช่น:
- การเรียงลำดับ
- ค้นหา
- เพิ่มจากโรงงาน (ฟังก์ชั่นสมาชิก AddNew)
- รายการแบบอ่านอย่างเดียว (คุณสมบัติ CanEdit)
ฟังก์ชันทั้งหมดนี้ไม่สามารถใช้งานได้ ObservableCollection<T>
ความแตกต่างก็คือว่าแจ้งเตือนการเปลี่ยนแปลงรีเลย์รายการเมื่อรายการของใช้BindingList INotifyPropertyChangedหากรายการหนึ่งเกิดขึ้นPropertyChangedเหตุการณ์BindingListจะได้รับมันเพิ่มListChangedEventด้วยListChangedType.ItemChangedและOldIndex=NewIndex(หากรายการถูกแทนที่OldIndex=-1) ObservableCollectionไม่ถ่ายทอดการแจ้งเตือนรายการ
โปรดทราบว่าใน Silverlight BindingListไม่สามารถใช้เป็นตัวเลือก: คุณสามารถใช้ObservableCollections และICollectionView(และIPagedCollectionViewถ้าฉันจำได้ดี)