我如何循环选项卡控件(wpf)中的所有控件?
问题描述:
我已经看到了一些如何用winforms做这个的例子,但由于wpf的TabItem没有控件的定义,所以一直无法让它在wpf中工作。这里是我现在使用的代码,这是行不通的。我如何循环选项卡控件(wpf)中的所有控件?
TabItem ti = rep1Tab;
var controls = ti.Controls;
foreach (var control in controls)
{
//do stuff
}
答
一个TabItem通常包含一个容器控件,如默认的网格。您可以尝试循环访问该容器控件的子项。
foreach (UIElement element in Grid1.Children)
{
//process element
}
如果你有访问特定控件的属性,您必须将元素
foreach (UIElement element in Grid1.Children)
{
//process element
Button btn = (Button)element;
btn.Content = "Hello World";
}
转换
答
如果你想要逻辑孩子,你使用LogicalTreeHelper.GetChilren()。 如果你想要视觉儿童,你使用VisualTreeHelper.GetChild()与VisualTreeHelper.GetChildrenCount()