8

अपडेट कर रहा है मैं कैसे एक संपत्ति ग्रिड अद्यतन स्वचालित रूप से हो सकता है, जब इसके SelectedObject गुण परिवर्तन में वस्तु? मेरी कक्षा में INotifyPropertyChanged को लागू करने की कोशिश की है, लेकिन जब तक मैं उस पर क्लिक करें संपत्ति ग्रिड वास्तव में पृष्ठभूमि में वस्तु के नए propertyies नहीं दिखाती है।एक PropertyGrid

मैंने अपनी ऑब्जेक्ट की प्रॉपर्टी चेंजेड इवेंट की सदस्यता लेने की कोशिश की है, और जब इसे एन्कॉक्ड किया जाता है तो प्रॉपर्टीग्रिड की रीफ्रेश() विधि को कॉल करना। लेकिन मेरी कुछ संपत्तियां संबंधित हैं। मतलब एक संपत्ति को बदलना कई संपत्ति परिवर्तन घटनाओं को जन्म दे सकता है। यह ठीक से काम करने लगता है, लेकिन अगर वहाँ DataBinding के माध्यम से ऐसा करने का एक क्लीनर तरीका है मैं अभी भी सोच रहा हूँ। इसके अलावा, मैं के बाद उपयोगकर्ता केवल एक ही संपत्ति अद्यतन नियंत्रण ताज़ा कई बार होने से बचाने के लिए करना चाहते हैं।

तो क्या संपत्ति ग्रिड को PropertyChanged ईवेंट से रीफ्रेश करने का कोई तरीका है?

उत्तर

0

मैं वहाँ एक अंतर्निहित तरीका यह करने के लिए है, लेकिन यहाँ एक सुझाव है कि अगर आप संबंधित संपत्तियों के लिए Refresh को कई कॉल से बचना चाहते हैं पता नहीं है:

जब एक PropertyChanged घटना होती है, एक टाइमर शुरू । यदि टाइमर बीत जाने से पहले घटना फिर से होती है, तो कुछ भी नहीं करें। टाइमर के Tick घटना में, PropertyGrid ताज़ा और जोड़ने RefreshProperties प्रत्येक संपत्ति है कि निर्भरता की विशेषता टाइमर रोक

+0

मुझे पता है कि यह जवाब दो साल का है, लेकिन मेरे पास ओपी के समान प्रश्न था और मैं इस जवाब में जोड़ना चाहता हूं कि टाइमर के पास ऑटोरसेट संपत्ति है। मतलब आपको टाइमर मैन्युअल रूप से रोकने की ज़रूरत नहीं है। :-) –

31

प्रयास करें:

[RefreshProperties(RefreshProperties.All)] 

अब, हर बार इस संपत्ति परिवर्तन - यह स्वचालित रूप से ताज़ा होगा अन्य क्षेत्रों। यह संपत्ति-ग्रिड के "ताज़ा करें()" को हर बार कॉल करने से कहीं अधिक क्लीनर दृष्टिकोण है।

+0

वाह! यह एक स्वीकार्य उत्तर क्यों नहीं है? – Dennis

+0

क्योंकि यह लगभग 8 महीने देर से तैनात थे। – flarn2006

+1

** लगभग सभी मुद्दों को हल किया गया। ** 'INotifyPropertyChanged' को कई फायरिंग चेक की आवश्यकता होती है, जबकि यह 'रीफ्रेशप्रॉपर्टीज' सॉर्टकट वास्तव में उन सभी को बाईपास करता है (धीमे, यह मेरी मशीन पर लगता है लेकिन ऐसा कभी विफल नहीं होता है) धन्यवाद! –

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