2009-09-14 10 views
7

Probablemente sea muy fácil pero estoy teniendo problemas para resolver esto (también Google no parece ayudar mucho).Cómo pasar por los elementos estáticos de StackPanel de WPF?

¿Cómo puedo recorrer los elementos declarados estáticamente (sin enlace de datos - los elementos están declarados en el xaml) de un StackPanel?

Cualquier ayuda apreciada!

Respuesta

10

¿Te refieres a los StackPanel's hijos?

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

Una solución más genérica que funcionaría independientemente de la matriz sería utilizar LogicalTreeHelper o VisualTreeHelper, dependiendo de qué árbol WPF que desea recorrer:

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

gracias - acabo de encontrarlo pero su respuesta es inmediata. no pude encontrarlo ya que estaba buscando "Artículos"! – JohnIdol

+0

Si bien Kent es 100% correcto, si está editando objetos XAML directamente en su código subyacente, lo más probable es que no esté usando databinding donde debería estar. No siempre el caso sin embargo :) –

0

pensé lo mismo que Johnldol , ya que en mi caso tuve un hijo y sabía su tipo; No quería ocultar mi código por un bucle innecesario. Así que así es como llegué al TextBlock dentro del hipervínculo:

 var looper = LogicalTreeHelper.GetChildren(objHyperlink).GetEnumerator(); 
     looper.MoveNext(); 
     TextBlock objTextBlock = (looper.Current as InlineUIContainer).Child as TextBlock; 
Cuestiones relacionadas