如何循环遍历 WPF StackPanel 静态项?

7

这可能很简单,但我还是有些困惑(Google似乎也没有提供太多帮助)。

我如何循环遍历StackPanel中静态声明的元素(没有数据绑定 - 元素在xaml中声明)?

感谢任何帮助!

2个回答

10
你是指 StackPanel 的子元素吗?
foreach (var child in stackPanel.Children)
{
    //do something with child
}

一个更通用的解决方案,不管父级是什么,可以使用LogicalTreeHelperVisualTreeHelper,具体取决于您希望遍历哪个WPF树:

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

1
谢谢 - 我自己找到了,但你的回答很到位。我一直在找“Items”! - JohnIdol
虽然Kent是100%正确的,但如果您在代码后台直接编辑XAML对象,则很可能是您没有使用应该使用的数据绑定。不过并非总是如此 :) - Ana Betts

0

我和Johnldol想的一样,因为在我的情况下,我只有一个子元素,并且知道它的类型;我不想通过不必要的循环来使代码变得复杂。因此,这就是我如何访问超链接中的TextBlock:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接