2009-07-14 28 views
6

बड़ी तस्वीर: मेरे पास एक कस्टम बाल नियंत्रण है जो मैंने सेट किए गए गुणों के आधार पर विभिन्न टेक्स्टबॉक्स, डेटपिकर्स, कॉम्बो इत्यादि उत्पन्न करता है। यह नियंत्रण मेरे एसएल अनुप्रयोग के भीतर विभिन्न स्थानों में एम्बेडेड है।सिल्वरलाइट: प्रोग्रामेटिक बाध्यकारी नियंत्रण गुण

मैं आम तौर पर एमवीवीएम पैटर्न का उपयोग करता हूं, और मैं इन गतिशील नियंत्रणों के मानों को अपने मास्टर पेज व्यू मॉडल में वापस बांधना चाहता हूं।

मुझे हमेशा पता है कि फॉर्म पर 8 नियंत्रण होंगे ताकि नियंत्रण के लिए नियंत्रण के लिए मेरे पास निर्भरता गुण हो सकें। फिर इस नियंत्रण को संदर्भित करने वाले नियंत्रण, एमवीवीएम पैटर्न को बनाए रखने के दौरान दर्ज किए गए डेटा के साथ बाध्यकारी का उपयोग कर सकते हैं।

प्रश्न: मैं निर्भरता गुणों पर गतिशील नियंत्रण के मूल्यों को प्रोग्रामेटिक रूप से कैसे बांध सकता हूं?

धन्यवाद, मार्क

उत्तर

10

चलें यह मानें कि आप एक सरल पाठ बॉक्स डायनामिक रूप से तैयार किया है और आप एक पाठ संपत्ति पर बाध्यकारी जोड़ना चाहते हैं: -

Binding binding = new Binding("SomeProperty"); 
binding.Mode = BindingMode.TwoWay; 

txtBox.SetBinding(TextBox.TextProperty, binding); 

कहाँ txtBox गतिशील पाठ बॉक्स बनाई गई है आप चाहते हैं निरीक्षण/उत्परिवर्तन करने के लिए।

+2

मुझे लगता है कि बाइंडिंग के लिए असाइनमेंट होना चाहिए। स्रोत। अन्यथा, यह कुछ भी बांध नहीं है। –

+0

क्या आप मेरे संबंधित प्रश्न पर टिप्पणी कर सकते हैं? http://stackoverflow.com/questions/8854034/how-to-create-binding-inside-custom-control-automatically – katit

8

मार्क, मुझे पूरा यकीन नहीं है कि मैंने आपके प्रश्न में निहितार्थों को समझ लिया है, लेकिन क्या आपने बाध्यकारी वर्ग माना है? उदाहरण के लिए:

Customer customer = new Customer(); 
TextBox box = new TextBox(); 
Binding binding = new Binding("FullName"); 
binding.Source = customer; 
box.SetBinding(TextBox.TextProperty, binding); 

इस ग्राहक ने वस्तु की "FullName" संपत्ति के लिए पाठ बॉक्स नियंत्रण के "पाठ" निर्भरता संपत्ति बांधता है।

+1

और एंथनी WJones ने बताया, आपको BindingMode सेट करना होगा। दोवे अगर आप टेक्स्टबॉक्स में बदलाव चाहते हैं ग्राहक ऑब्जेक्ट पर वापस प्रचार करने के लिए। –

+0

शायद आप इस स्तर पर स्रोत असाइन नहीं करना चाहते हैं, हालांकि आप? – AnthonyWJones

+0

हाँ, शायद नहीं - क्योंकि यह DataContext को ओवरराइड करता है। –

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