2009-08-16 9 views
5

मान लीजिए कि मुझे एक्सएएमएल में कुछ बच्चों के साथ ग्रिड का प्रतिनिधित्व करना है, प्रत्येक बच्चा एक अलग नियंत्रण है, एक्स: नाम के साथ। मैं नाम से कोड से उन नियंत्रणों को "प्राप्त" कैसे करूं?सिल्वरलाइट 3.0: मैं x द्वारा ग्रिड बच्चों को कैसे प्राप्त करूं: नाम?

उत्तर

8

कोड है कि आप लिख रहे हैं कोड-पीछे XAML फ़ाइल के लिए फ़ाइल में है, तो दृश्य स्टूडियो स्वचालित रूप से सदस्य XAML फाइल में किसी भी नामित तत्वों के संदर्भों वाले चर उत्पन्न करनी चाहिए। तो यदि आपके पास x: name = "myButton" वाला बटन है, तो आप इस बटन को इस.मी बटन के माध्यम से एक्सेस कर सकते हैं।

आप के अलावा अन्य कहीं से एक नामित तत्व को संदर्भित करना चाहते हैं कोड-पीछे फ़ाइल, आप FindName तत्व पर नामित तत्व के लिए, कॉल कर सकते हैं जैसे:

Button myButton = myGrid.FindName("myButton") as Button; 

जहां myGrid लिए एक संदर्भ है सवाल में ग्रिड।

+0

woot का उपयोग करना चाहिए! यह काम। मुझे एक विकल्प मिला जो थोड़ा अधिक जटिल है लेकिन साथ ही साथ काम करता है: निजी बटन myButtnon; foreach (myGrid.Children में FrameWorkElement फ़े) { अगर (fe.GetType() == typeof (बटन) myButton = फ़े बटन के रूप में; } – Maciek

+0

ध्यान दें कि myButton आंतरिक पहुँच के साथ एक क्षेत्र इसलिए भी कोड से बाहर किया जाएगा कोड-बैक फ़ाइल जिसे आप FindName का उपयोग किए बिना एक्सेस कर सकते हैं। – AnthonyWJones

+0

यदि आपको पता था कि मैंने इस सरल उत्तर की कितनी देर तक खोज की है! सीधे सवाल के लिए धन्यवाद – Arrie

1

एक्स के साथ प्रत्येक नियंत्रण: नाम के लिए आंशिक वर्ग में बनाए गए क्षेत्र को XAML के लिए बनाया गया है। इस क्षेत्र में आंतरिक पहुंच है। इसलिए "कोड-बैक" सीएस में कोड से (मुझे उस शब्द से नफरत क्यों है?) आप इसे एक्सेस करने के लिए सीधे कोड में नियंत्रण नाम का उपयोग कर सकते हैं।

+0

क्या आप इतने दयालु और विस्तृत होंगे? – Maciek

+0

मुझे लगता है कि उसका मतलब है, यदि आपके पास एक्स है: नाम = "MyNamedControl"। एक बार जब आप इसे संकलित कर लेंगे, तो संदर्भ.g फ़ाइल स्वचालित रूप से उपलब्ध होगी ताकि आप इसे टाइप कर सकें। MyNamedControl – Paully

+0

लेकिन यदि आप templating कर रहे हैं, तो ऐसा नहीं होगा और आपको FindName – Paully