एक 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अगर मुझे अच्छी तरह से याद है) का उपयोग कर सकते हैं ।