我有StackPanel
个WrapPanel
。在每个WrapPanel
内部找到两个元素:
<StackPanel FlowDirection="RightToLeft" Grid.Column="2" Grid.Row="1" Name="check_boxes_layout">
<WrapPanel>
<CheckBox Name="chk1" Checked="Checked_Changed" Unchecked="Unchecked"></CheckBox>
<Rectangle Width="50" Fill="Red" Name="rec1" Margin="10 2 2 2"/>
</WrapPanel>
<WrapPanel>
<CheckBox Name="chk12" Checked="Checked_Changed" Unchecked="Unchecked"></CheckBox>
<Rectangle Width="50" Fill="Blue" Name="rec2" Margin="10 2 2 2"/>
</WrapPanel>
<StackPanel/>
我希望得到所有类型的孩子复选框。我可以这样做吗?
foreach (var item in check_boxes_layout.Children.OfType<CheckBox>())
{
//this code just return Wrap Panel
}
先谢谢你。
答案 0 :(得分:2)
使用此递归函数:
List<UIElement> GetAllChildren(Panel c)
{
List<UIElement> list = c.Children.Cast<UIElement>().ToList();
foreach( var elem in list.OfType<Panel>())
list.AddRange(GetChildren(elem));
return list;
}
不,你可以说:
foreach (var item in GetAllChildren(check_boxes_layout).OfType<CheckBox>())
{
//...
}
答案 1 :(得分:0)
我首先通过warp面板循环并得到它的孩子
foreach (WrapPanel warppanel in check_boxes_layout.Children)
{
foreach (var item in warppanel.Children.OfType<CheckBox>)
{
.
.
.
}
}