我希望获得包含在边框中的Grid
控件(未分配Name
),结构如下所示:
<Grid x:Name="main">
<uc:myUc/>
<Border>
<!--other elements-->
</Border>
<Border>
<Grid x:Name="myGrid">
<!--I want to get all controls here-->
</Grid>
</Border>
</Grid>
myUc
是一个用户控件,其中有一个按钮,单击该按钮时,我想获取网格myGrid
内的所有控件:
这是我正在使用的代码,似乎我应该向容器Name
提供Border
以便能够获得其子代,但这对我的应用程序来说是一个巨大的变化。 / p>
var parent = VisualTreeHelper.GetParent(this) as UIElement;
var grid = (parent as Grid);
var chldrn = grid.Children;
foreach (var item in chldrn)
{
var child = item;
}
//I stopped here!
有没有办法找到元素的所有后代来确定我采取哪种控制?
答案 0 :(得分:1)
您可以按类型
访问容器中的任何类型的子项XAML示例:
<Grid x:Name="myGrid">
<Button Content="Button1"></Button>
<Button Content="Button2"></Button>
<CheckBox Content="CheckBox1"></CheckBox>
</Grid>
C#示例
private void Button_Click(object sender, RoutedEventArgs e)
{
foreach(var Child in myGrid.Children.OfType<Button>()) // this will only get buttons in grid's children
{
MessageBox.Show(Child.Content);
}
//another way:
foreach(var Child in myGrid.Children)
{
if (Child is CheckBox)
{
var checkBox = (CheckBox)Child;
checkBox.IsChecked = true;
}
}
}