Как перебрать статические элементы WPF StackPanel?
-
07-07-2019 - |
Вопрос
Возможно, это очень просто, но у меня возникли проблемы с этим (также, похоже, Google не сильно помогает).
Как я могу перебрать статически объявленные элементы (без привязки данных - элементы объявлены в xaml) StackPanel?
Любая помощь приветствуется!
Решение
Вы имеете в виду детей StackPanel
?
foreach (var child in stackPanel.Children)
{
//do something with child
}
Более общее решение, которое будет работать независимо от родителя, заключается в использовании LogicalTreeHelper
или VisualTreeHelper
, в зависимости от того, какое дерево WPF вы хотите пройти:
foreach (var child in LogicalTreeHelper.GetChildren(stackPanel))
{
//do something with child
}
Другие советы
Я думал точно так же, как Джондол, поскольку в моем случае у меня был один ребенок, и я знал его тип; Я не хотел затенять свой код ненужным циклом. Вот как я достиг TextBlock внутри гиперссылки:
var looper = LogicalTreeHelper.GetChildren(objHyperlink).GetEnumerator();
looper.MoveNext();
TextBlock objTextBlock = (looper.Current as InlineUIContainer).Child as TextBlock;
Не связан с StackOverflow