Comment parcourir en boucle les éléments statiques WPF StackPanel?
-
07-07-2019 - |
Question
Probablement très facile, mais j’ai du mal à le comprendre (et Google ne semble pas beaucoup aider).
Comment puis-je parcourir les éléments déclarés statiquement (aucune liaison de données - les éléments sont déclarés dans le xaml) d'un StackPanel?
Toute aide appréciée!
La solution
Voulez-vous dire les enfants de StackPanel
?
foreach (var child in stackPanel.Children)
{
//do something with child
}
Une solution plus générique qui fonctionnerait indépendamment du parent serait d'utiliser LogicalTreeHelper
ou VisualTreeHelper
, en fonction de l'arborescence WPF que vous souhaitez parcourir:
foreach (var child in LogicalTreeHelper.GetChildren(stackPanel))
{
//do something with child
}
Autres conseils
Je pensais exactement comme Johnldol, car dans mon cas, j’avais un enfant et je connaissais son type; Je ne voulais pas masquer mon code par une boucle inutile. Voici donc comment j'ai atteint le TextBlock à l'intérieur du lien hypertexte:
var looper = LogicalTreeHelper.GetChildren(objHyperlink).GetEnumerator();
looper.MoveNext();
TextBlock objTextBlock = (looper.Current as InlineUIContainer).Child as TextBlock;