एक ObservableCollection
वास्तव में किसी भी संग्रह की तरह यूआई से अद्यतन किया जा सकता। असली अंतर सीधा नहीं है:
ObservableCollection<T>
INotifyCollectionChanged
संग्रह को परिवर्तित करने पर अधिसूचना जो प्रदान करती है (आपने अनुमान लगाया गया है ^ ^) यह बाध्यकारी इंजन को यूआई अद्यतन करने की अनुमति देता है जब ObservableCollection
वह अद्यतन किया जाता है।
हालाँकि, BindingList<T>
लागू करता है IBindingList
।
IBindingList
संग्रह परिवर्तन पर अधिसूचना प्रदान करता है, लेकिन केवल यही नहीं। यह कार्यक्षमता का एक पूरा गुच्छा प्रदान करता है जिसका उपयोग यूआई द्वारा परिवर्तनों के अनुसार केवल UI अपडेट की तुलना में बहुत अधिक चीजें प्रदान करने के लिए किया जा सकता है, जैसे:
- छंटाई
- खोज कर
- कारखाने के माध्यम से जोड़ें (AddNew सदस्य फ़ंक्शन)।
- आसानी से सूची (संपत्ति संपत्ति)
ये सभी कार्य में उपलब्ध नहीं हैं ObservableCollection<T>
एक और अंतर यह है कि BindingList
जब आइटम लागू होता है तो आइटम परिवर्तन सूचनाओं को रिले करता है INotifyPropertyChanged
। यदि कोई आइटम किसी PropertyChanged
घटना को उठाता है , तो BindingList
वसीयत उसे एक के ListChangedEvent
साथ उठाती है ListChangedType.ItemChanged
और OldIndex=NewIndex
(यदि एक आइटम को बदल दिया गया था OldIndex=-1
)। ObservableCollection
आइटम सूचनाओं को रिले नहीं करता है।
ध्यान दें कि सिल्वरलाइट में, BindingList
एक विकल्प के रूप में उपलब्ध नहीं है: आप हालांकि ObservableCollection
एस और ICollectionView
(और IPagedCollectionView
अगर मुझे अच्छी तरह से याद है) का उपयोग कर सकते हैं ।