我如何循环选项卡控件(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()