Monday, 15 February 2010

c# - Binding in User Controls -


मान लें कि मुझे यह कोड मिल गया है (Winforms में):

  सार्वजनिक वर्ग SomeClass {सार्वजनिक स्ट्रिंग नाम {get; सेट; }} सार्वजनिक आंशिक कक्षा SomeControl: UserControl {निजी SomeClass inClass; सार्वजनिक स्ट्रिंग MyName {get; सेट; } सार्वजनिक कुछ कंट्रोल (कुछ क्लास कुछ क्लास) {InitializeComponent (); This.inClass = someClass; SetupBinding (); } निजी शून्य SetupBinding () {this.DataBindings.Clear (); यह। डेटाबिंडिंग.ऐड ("माइनाम", this.inClass, "नाम"); }}   

अगर मैं उपयोगकर्ता के नियंत्रण के बाहर SomeClass.Name का मान बदलूंगा, तो संपत्ति का नाम बदल नहीं होगा I मैं क्या कर रहा हूं?

धन्यवाद

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

पुनश्च: मैंने बाध्यकारी बनाने के लिए कुछ एक्सटेंशन विधि को आसान और रीफैक्चरिंग के अनुकूल तरीके से लिखा है। आपके मामले में ऐसा दिखेगा:

  this.BindTo (inClass, c = & gt; c.MyName, m = & gt; m.Name);   

विधि स्वयं:

  सार्वजनिक स्टेटिक क्लास बाइंडिंग एक्सटेन्टेन्शंस {सार्वजनिक स्टेटिक बाध्यकारी बाइंडटो & lt; टीसींट्रोल, टीसीन्ट्रोलपोप्रर्टी, टीएमओडेल, टीएमोडेलप्रॉपर्टी & gt; (यह टीसीन्ट्रोल नियंत्रण, टीएमओडेल मॉडल , एक्सप्रेशन एंड लेफ्टिनेंट; फंक लिट; टीकंट्रोल, टीसीन्ट्रोलप्रोटीटी & gt; नियंत्रण प्रॉपर्टी, अभिव्यक्ति & lt; फ़नक एंड टीएम; टीएमओडेल, टीएमोडेलप्रोपेर्टी & gt; मॉडल प्रॉपर्टी, स्ट्रिंग फॉर्मेट = नल) जहां टीसींट्रोल: नियंत्रण {var नियंत्रण पोर्ट्रेट नाम = ((सदस्य एक्सपेरेशन) नियंत्रण प्रॉपर्टी.बॉडी) .मेल। नाम ; Var मॉडलप्रॉपर्टीनैम = ((सदस्य एक्सपे्रेशन) मॉडल Property.Body) .मेल .नाम; Var स्वरूपनसक्षम =! स्ट्रिंग.आईसऑनऑर व्हाईटस्पेस (प्रारूप); Var बाइंडिंग = कंट्रोल। डेटाबैंविंग्स। जोड़ें (कंट्रोल पोर्ट्रेटिनेम, मॉडल, मॉडल प्रॉपर्टीनेटम, फ़ॉर्मेटिंग सक्षम, डेटाससोर्सअपडेटाडेट .ऑनप्रॉपर्टी चेंगल); यदि (स्वरूपण सक्षम किया गया है) {बाध्यकारी.फॉर्मेटस्ट्रिंग = प्रारूप; } बाध्यकारी वापसी; }}    

No comments:

Post a Comment