1

私はStackPanelいくつかを持っていWrapPanelます。WrapPanel それぞれの配置された 2 つの要素の内部:

<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
}

前もって感謝します。

4

2 に答える 2

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>())
{
    //...
}
于 2013-03-03T09:39:06.380 に答える
0

最初にワープパネルをループして、その子を取得しました

 foreach (WrapPanel warppanel in check_boxes_layout.Children)
 {
     foreach (var item in warppanel.Children.OfType<CheckBox>)
     {
          .
          .
          .
     }
 }
于 2013-03-03T09:39:43.360 に答える