2009-10-05 8 views
7

मेरे पास एक उपयोगकर्ता नियंत्रण है जो एक कंट्रोल टेम्पलेट अनुभाग वाली शैली के साथ बटन पर एक शैली लागू करता है। ControlTemplate के भीतर, एलीप्स और पथ जैसे कई यूआई तत्व हैं।डब्ल्यूपीएफ सेट ने कोड के पीछे कोड तत्वों का नाम दिया?

यदि मैं उन तत्वों को देता हूं - एलीपसे और पथ - x: name के साथ एक नाम, क्या मैं उन्हें कोड से पीछे से एक्सेस कर सकता हूं?

ऐसा लगता है कि शैली का एलीप्स और पथ दिखाई नहीं दे रहा है क्योंकि मुझे संकलन त्रुटि (सी #) मिलती है।

क्या मैं इस बारे में गलत तरीके से जा रहा हूं?

उत्तर

18

क्योंकि एक टेम्पलेट को कई बार तत्काल चालू किया जा सकता है, x:Name के माध्यम से जेनरेट किए गए सदस्य को बांधना संभव नहीं है। इसके बजाय, आपको नियंत्रण में लागू टेम्पलेट के भीतर नामित तत्व ढूंढना होगा।

को देखते हुए सरलीकृत XAML:

<ControlTemplate x:Key="MyTemplate"> 
    <Ellipse x:Name="MyEllipse" /> 
</ControlTemplate> 

आप कुछ इस तरह करना होगा:

var template = (ControlTemplate)FindResource("MyTemplate"); 

template.FindName("MyEllipse", myControl); 

या और भी अधिक बस:

var ellipse = (Ellipse)myControl.Template.FindName("MyEllipse", myControl); 

आप FrameworkTemplate.FindName के बारे में पढ़ सकते हैं।

कुछ उदाहरण और चर्चा here, here और here

+0

बिल्कुल सही, बहुत बहुत धन्यवाद! – MattJ

+11

यदि यह सही है तो इसे उत्तर के रूप में चिह्नित करें। – Vaccano

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