2009-09-14 12 views
7

Prawdopodobnie bardzo łatwo, ale mam problem, aby to zrozumieć (również Google nie wydaje się pomóc).Jak zapętlić elementy statyczne StackPanel WPF?

Jak mogę wykonać pętlę przez statycznie zadeklarowane elementy (brak wiązania danych - elementy są zadeklarowane w Xaml) StackPanel?

Każda pomoc doceniona!

Odpowiedz

10

Czy masz na myśli dzieci StackPanel?

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

Bardziej ogólne rozwiązanie, które będzie działać niezależnie od rodzica byłoby użyć LogicalTreeHelper lub VisualTreeHelper, w zależności od WPF drzewie chcesz przemierzać:

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

dzięki - znalazłem to sam, ale twoja odpowiedź jest natychmiastowa. nie można go znaleźć tak, jak szukałem "Przedmioty"! – JohnIdol

+0

Podczas gdy Kent jest w 100% poprawny, jeśli edytujesz obiekty XAML bezpośrednio w swoim kodzie, najprawdopodobniej nie używasz wiązania danych tam, gdzie powinieneś być. Jednak nie zawsze tak jest :) –

0

myślałem tak samo jak Johnldol , ponieważ w moim przypadku miałem jedno dziecko i znałem jego typ; Nie chciałem zasłaniać mojego kodu niepotrzebną pętlą. Tak więc dotarłem do obiektu TextBlock w hiperłączu:

 var looper = LogicalTreeHelper.GetChildren(objHyperlink).GetEnumerator(); 
     looper.MoveNext(); 
     TextBlock objTextBlock = (looper.Current as InlineUIContainer).Child as TextBlock; 
Powiązane problemy