2009-09-14 16 views
7

शायद बहुत आसान है लेकिन मुझे इसे समझने में परेशानी हो रही है (Google भी बहुत मदद नहीं करता है)।WPF StackPanel स्थिर आइटम के माध्यम से कैसे लूप करें?

स्टैकपैनल के स्थिर रूप से घोषित तत्वों (कोई डेटाबेस नहीं - तत्व xaml में घोषित किए गए हैं) के माध्यम से मैं कैसे लूप कर सकता हूं?

किसी भी मदद की सराहना की!

उत्तर

10

क्या आपका मतलब StackPanel के बच्चों का है?

foreach (var child in LogicalTreeHelper.GetChildren(stackPanel)) 
{ 
    //do something with child 
} 
+1

धन्यवाद - बस इसे स्वयं पाया लेकिन आपका उत्तर स्पॉट-ऑन है। इसे नहीं मिला क्योंकि मैं "आइटम" ढूंढ रहा था! – JohnIdol

+0

जबकि केंट 100% सही है, यदि आप सीधे अपने कोड-बैक में एक्सएएमएल ऑब्जेक्ट्स संपादित कर रहे हैं, तो संभवतः यह मामला है कि आप डाटाबेसिंग का उपयोग नहीं कर रहे हैं, जहां आपको होना चाहिए। हालांकि हमेशा मामला नहीं :) –

0

मैं सिर्फ Johnldol के रूप में ही सोचा:

foreach (var child in stackPanel.Children) 
{ 
    //do something with child 
} 

एक अधिक सामान्य समाधान है कि माता-पिता की परवाह किए बिना काम करेगा आप तय करना चाहते हैं क्या WPF पेड़ के आधार पर LogicalTreeHelper या VisualTreeHelper, उपयोग करने के लिए किया जाएगा , क्योंकि मेरे मामले में मेरे एक बच्चे थे और मैं इसके प्रकार को जानता था; मैं अपने कोड को अनावश्यक लूप द्वारा अस्पष्ट नहीं करना चाहता था। तो इस तरह मैं हाइपरलिंक के अंदर टेक्स्टब्लॉक पर पहुंचा:

 var looper = LogicalTreeHelper.GetChildren(objHyperlink).GetEnumerator(); 
     looper.MoveNext(); 
     TextBlock objTextBlock = (looper.Current as InlineUIContainer).Child as TextBlock; 
संबंधित मुद्दे