C# 如何遍历stackpanel中的所有文本块

C# 如何遍历stackpanel中的所有文本块,c#,wpf,xaml,C#,Wpf,Xaml,我有一个stackpanel,它在运行时动态添加了许多文本块。我点击的文本块的字体颜色(变为红色)最好的方法是什么,同时确保所有其他字体都保持(或返回)默认白色 我已经有了ontapped处理程序,它可以很好地改变颜色,但是当我单击另一个/second文本块时,问题就出现了,因为最初的文本块不会变回白色。 我想我在寻找的东西大致如下: foreach (TextBlock tbl in MyStackPanel) { // change all text to white

我有一个stackpanel,它在运行时动态添加了许多文本块。我点击的文本块的字体颜色(变为红色)最好的方法是什么,同时确保所有其他字体都保持(或返回)默认白色

我已经有了ontapped处理程序,它可以很好地改变颜色,但是当我单击另一个/second文本块时,问题就出现了,因为最初的文本块不会变回白色。 我想我在寻找的东西大致如下:

foreach (TextBlock tbl in MyStackPanel)
    {
        // change all text to white
    }

      // Get the tapped one and change it to red

但是,您不能遍历stackpanel子级,因为编译器不允许您这样做。有更好的方法吗?

有一个
Children
属性,您可以对其进行迭代

foreach (var tb in MyStackPanel.Children.OfType<TextBlock>())
    tb.Foreground = Brushes.White;
foreach(MyStackPanel.Children.OfType()中的var tb)
tb.前景=画笔.白色;

有一个
子属性
可以循环使用

foreach (var tb in MyStackPanel.Children.OfType<TextBlock>())
    tb.Foreground = Brushes.White;
foreach(MyStackPanel.Children.OfType()中的var tb)
tb.前景=画笔.白色;

它们都是
StackPanel
的直接子控件还是嵌套在其他控件中?您应该使用绑定来更改文本框的颜色它们都是
StackPanel
的直接子控件还是嵌套在其他控件中?您应该使用绑定来更改文本框的颜色!成功了。谢谢你!成功了。谢谢