我正在尝试从组框中的所有复选框中获取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()。已检查) { 在这里运行私人代码 }
答案 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>