2010-08-16 9 views
7

मैंने ऑब्जर्जेबल कोलेक्शन के लिए एक रैपर संग्रह बनाया है जो प्रत्येक आइटम की सदस्यता लेता है PropertyChanged ईवेंट और इसे अपने स्वयं के ईवेंट के रूप में पुनर्स्थापित करता है ItemPropertyChanged। मैंने इसे here वर्णित करने के लिए एक समान विधि का उपयोग करके किया। क्या कोई बेहतर तरीका है? क्या मैं एक और .NET संग्रह खो रहा हूं जिसमें पहले से ही इस प्रकार का व्यवहार है?एक पर्यवेक्षित चयन में किसी भी आइटम की PropertyChanged घटना को सुनें <INotifyPropertyChanged>

+0

ऐसा लगता है कि यह बहुत महंगा हो सकता है, कहें, एक बहुत बड़ा संग्रह बनाना। मुझे आशा है कि एक बेहतर विकल्प होगा। – kbrimington

+0

ऐसा कोई नहीं है जिसे मैंने देखा है। – bporter

+0

मानक INotifyPropertyChanged/ICollectionChanged इंटरफेस का उपयोग करने के बजाय अपना स्वयं का ईवेंट बनाने का उद्देश्य क्या है? – Goblin

उत्तर

0

स्टैक ओवरफ्लो पर इसके बारे में पहले से ही एक पोस्ट था। यह एक नए संग्रह प्रकार का त्वरित कार्यान्वयन भी प्रदान करता है जो इसे काम करने के लिए एक घटना का खुलासा करता है।

लिंक देखें: ObservableCollection that also monitors changes on the elements in collection

+0

सहमत हुए, मैं संग्रह में प्रत्येक बच्चे के आइटम की सदस्यता लेने के बजाय 'बेहतर' तरीका ढूंढ रहा था। – chilltemp

0

मैं यह सोचते हैं रहा है कि आप एक समग्र गणना करने के लिए इस घटना में सक्रिय हो रहे हैं। मेरे पास इस समस्या का एक अलग समाधान है। Update Controls with linq का उपयोग करने पर विचार करें। आप अपने समग्र रूप से linq के साथ वर्णन कर सकते हैं, और अद्यतन नियंत्रण आपके संग्रह में अपनी निर्भरताओं को ट्रैक करेंगे। जब भी संग्रह बदलता है, या किसी भी संदर्भित गुणों में परिवर्तन होता है, तो यह कुल का पुनर्मूल्यांकन करेगा।

0

बस इसके बजाय System.ComponentModel.BindingList<T> का उपयोग करें। ListChanged घटना जब यह सूची में किसी भी आइटम को INotifyPropertyChanged पर आग लगती है तो यह आग लग जाएगी।

संबंधित मुद्दे