Como loop através de itens estáticos WPF StackPanel?
-
07-07-2019 - |
Pergunta
Provavelmente muito fácil, mas estou tendo problemas para descobrir isso (também Google parece não ajuda muito).
Como posso percorrer os elementos estaticamente declarados? (Sem ligação de dados - elementos são declarados no xaml) de um StackPanel
Qualquer ajuda apreciada!
Solução
Você quer dizer os filhos do StackPanel
?
foreach (var child in stackPanel.Children)
{
//do something with child
}
Uma solução mais genérica que iria funcionar independentemente do pai seria usar LogicalTreeHelper
ou VisualTreeHelper
, dependendo do que WPF árvore que você deseja percorrer:
foreach (var child in LogicalTreeHelper.GetChildren(stackPanel))
{
//do something with child
}
Outras dicas
Eu pensei exatamente o mesmo que Johnldol, já que no meu caso eu tive um filho e eu sabia seu tipo; Eu não queria obscurecer meu código por um circuito desnecessário. Então é assim que cheguei ao TextBlock dentro do Hyperlink:
var looper = LogicalTreeHelper.GetChildren(objHyperlink).GetEnumerator();
looper.MoveNext();
TextBlock objTextBlock = (looper.Current as InlineUIContainer).Child as TextBlock;