在 WPF 中 TabControl 有 Items 集合属性,直接 foreach 得到 TabItem,使用 TabItem 的 Content 属性来获得 Grid
public MainWindow()
{
InitializeComponent();
// tabControl 为 UI 界面 TabControl 控件的名字( x:Name="tabControl" )
foreach (TabItem tabItem in tabControl.Items)
{
Grid grid = (Grid)tabItem.Content;
GetControls(grid.Children);
}
}
利用 Grid 和 WrapPanel 的 Children 属性,获得子控件
/// <summary>
/// 获取 UI 元素的子控件(参数为 UI 元素的有序集合)
/// </summary>
/// <param name="uiControls"></param>
List<string> lists = new List<string>();
private void GetControls(UIElementCollection uiControls)
{
foreach (UIElement element in uiControls)
{
if (element is Button)
{
Button button = (element as Button);
string value = button.Content.ToString();
lists.Add(value);
}
else if (element is Grid)
{
// 递归调用
GetControls((element as Grid).Children);
}
else if (element is WrapPanel)
{
// 递归调用
GetControls((element as WrapPanel).Children);
}
}
}