2011-11-14 10 views
34

के भीतर से नियंत्रण टेम्पलेट के तत्व का उपयोग कैसे करूं मैं सामग्री नियंत्रण के नियंत्रण टेम्पलेट के अंदर एक उपयोगकर्ता नियंत्रण तक पहुंचने का प्रयास कर रहा हूं। विशेष रूप से:मैं कोड-पीछे

<ContentControl x:Name="MyList" > 
     <ContentControl.Template> 
      <ControlTemplate x:Name="MyControlTemplate"> 
       <Border RenderTransformOrigin="0,0" x:Name="border"> 
        <UserControls:MyControl x:Name="MyControlName" Width="100" ViewModel="{Binding}" /> 

मैं इसे एक्सेस कर सकता हूं। मेरी सूची लेकिन यह कहती है। MyControlName नहीं मिला है। मैं इस स्थिति में कोड-बैक से MyControlName ऑब्जेक्ट को कैसे एक्सेस करूं?

धन्यवाद!

var template = MyList.Template; 
var myControl = (MyControl)template.FindName("MyControlName", MyList); 

टेम्पलेट्स सिर्फ इतना है कि कर रहे हैं::

+0

मुझे लगता है कि आपको यह समझना चाहिए कि आप क्या हासिल करने की कोशिश कर रहे हैं, बाधाएं हैं कि आपको जो करना है वह करने की ज़रूरत नहीं है। – flq

उत्तर

62

आप टेम्पलेट की तरह कुछ मिलता है और टेम्प्लेटेड नियंत्रण पर नाम से नियंत्रण लगाने के लिए, आपको क्या करना होगा टेम्पलेट्स में बनाया जाना, नियंत्रण है की सार वर्णन केवल templated कुछ के संदर्भ में मौजूद है।


नोट है कि आप केवल कभी एक नियंत्रण टेम्पलेट भीतर तत्वों का उपयोग करना चाहिए आप नियंत्रण है कि टेम्पलेट के लिए है का लेखन कर रहे हैं। बाहर से पहुंच बाध्य गुणों और तरीकों के माध्यम से किया जाना चाहिए।

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

4

यू लोड किए गए ईवेंट को नियंत्रण में जोड़कर और फिर कोड में कुछ चर के लिए कोड असाइन करने के द्वारा प्रत्येक टेम्पलेट से नियंत्रण प्राप्त कर सकता है।

+1

@ क्रिस्टिक, "इस की सादगी" उत्तर "इसे बनाता है ..." यह answear स्वीकार किए गए उत्तर से अधिक सरल नहीं है। इसके अलावा, अधिक सरल answear बेहतर नहीं है :) –

+0

मेरे नियंत्रण शैलियों और कस्टम टेम्पलेट्स की एक श्रृंखला में गहरी दफनाया गया था और इस घटना ने मुझे बचाया। धन्यवाद। – grinder22