无法从GroupBox获取控件

时间:2018-09-19 15:44:30

标签: c# wpf

我正在尝试从组框中的所有复选框中获取IsChecked值。我一直在搜索,似乎每个人都指向yourControl.Controls.OfType()。问题是,我无法从组框中移出控件。每当我尝试对其进行编码时,都会收到“ GroupBox不包含控件的定义”错误。

我对此很陌生,很抱歉,如果这个问题在我看过的其他地方得到了回答,而这并不是我想要的。我正在Visual Studio 2017中创建WPF C#应用。

我已经包含了部分我的xaml

<GroupBox Name="Computers" Header="Computers" HorizontalAlignment="Left" 
Height="315" Margin="21,78,0,0" VerticalAlignment="Top" Width="216">
<CheckBox Name="Training01CB" Content="Training01" 
HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" 
Height="15" Width="78" IsChecked="False"/>
<CheckBox Name="Training02CB" Content="Training02" 
HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" 
Height="15" Width="78" IsChecked="False"/>
</GroupBox>

我想做这样的事情: foreach(Computers.Controls.OfType()。已检查) {    在这里运行私人代码 }

1 个答案:

答案 0 :(得分:1)

您发布的XAML无效,无法编译。您只能将Content中的GroupBox设置为单个对象。

但是,如果将其设置为Panel并将CheckBox元素添加到此Panel,则可以像下面这样遍历其Children属性:

Panel panel = Computers.Content as Panel;
if (panel != null)
{
    foreach (CheckBox checkBox in panel.Children.OfType<CheckBox>())
    {
        //...
    }
}

XAML:

<GroupBox Name="Computers" Header="Computers">
    <StackPanel>
        <CheckBox Name="Training01CB" Content="Training01" IsChecked="False"/>
        <CheckBox Name="Training02CB" Content="Training02" IsChecked="False"/>
    </StackPanel>
</GroupBox>