2012-04-24 14 views
8

The MSDN reference page for ObservableCollection<T> नोट्स:।ObservableCollection <T> का उपयोग करते समय, क्या मुझे अभी भी टाइप टी पर बदलकर INotifyProperty को लागू करने की आवश्यकता है?

"अपने संग्रह आवश्यकताओं Binding Sources Overview में वर्णित को पूरा करना चाहिए में वस्तुओं विशेष रूप से, अगर आप OneWay या TwoWay उपयोग कर रहे हैं (उदाहरण के लिए, आप अपने यूआई अद्यतन करना चाहते जब स्रोत गुण गतिशील रूप से बदलें), आपको INotifyPropertyChanged इंटरफ़ेस जैसे उपयुक्त संपत्ति बदली गई अधिसूचना तंत्र को लागू करना होगा। "

ObservableCollection<T> के बाद से पहले से ही INotifyPropertyChanged लागू करता है, यही कारण है कि मैं फिर से T भी पर INotifyPropertyChanged को लागू करने की जरूरत है?

उत्तर

7

तालिका के लिए डेटा स्रोत के रूप में अपने अवलोकन संग्रह पर विचार करें। संग्रह से प्रत्येक ऑब्जेक्ट एक पंक्ति पर है, और कई स्तंभों में तालिका में प्रदर्शित होता है।

दृश्य (यानी आपकी तालिका) को वस्तुओं की बदलती गुणों के जवाब में प्रत्येक सेल को संशोधित करने के बारे में जानने की आवश्यकता है, लेकिन संग्रह से और वस्तुओं को जोड़ने और हटाने के जवाब में भी। इतने पर वह अपने पर्यवेक्षकों को सूचित करता है जब एक वस्तु, डाला जाता है हटा दिया, चले गए, और:

आपका नमूदार संग्रह तालिका पंक्तियों से निपटने का ख्याल रखता है। हालांकि, इसमें व्यक्तिगत वस्तुओं के साथ क्या हो रहा है, इसका ज्ञान नहीं है, इसलिए तालिका कॉलम से निपटने में कोई सहायता नहीं है।

यह वह जगह है जहां आपकी वस्तुएं आती हैं: INotifyPropertyChanged लागू करके वे आपकी तालिका को कॉलम में डेटा प्रबंधित करने देते हैं।

+0

ग्रेट कॉगेंट स्पष्टीकरण। संक्षिप्त और स्पष्ट। +1 – TripleAntigen

3

INotifyPropertyChanged उस वस्तु द्वारा उठाया जाना चाहिए, जिसकी संपत्तियां बदल रही हैं। ObservableCollection बस इसमें मौजूद वस्तुओं में परिवर्तनों का पता नहीं लगा सकता है और आपकी तरफ से उनको पास कर सकता है।

संग्रह लागू करने का कारण INotifyPropertyChanged विशेष रूप से उपयोगी नहीं है। मुझे संदेह है कि यह केवल संग्रह की Count संपत्ति के लिए एक परिवर्तन घटना को बढ़ाने जा रहा है जो संग्रह में आइटम जोड़े/हटाए जाने के रूप में बदल जाएगा।

यदि आप केवल आइटमों को जोड़ने/निकालने में रुचि रखते हैं, तो आपको अपनी कक्षा में इस इंटरफेस को लागू करने की आवश्यकता नहीं हो सकती है। लेकिन यदि आपका यूआई ऑब्जेक्ट के गुणों के लिए बाध्यकारी है, तो यदि आप यूआई को प्रतिक्रिया देना चाहते हैं तो आपको इसे लागू करने की आवश्यकता होगी।