需求:给一组CheckBox做一个全选/全不选的按钮。
思路:CheckBox不像RadioButton那样拥有GroupName属性来分组,于是我想的方法是将这组CheckBox放到一个布局容器中,给这个布局容器命名,后台代码通过名字找到该布局控件,再获取它的所有子类,即可操作这一组CheckBox。
前台代码:
<WrapPanel Name="materialTabItem" Orientation="Horizontal">
<CheckBox Name="selectAllBtn" Click="selectAll_OnClick" Content="全选/全不选" Margin="5"/>
<CheckBox Content="实木地板" Margin="5"/>
<CheckBox Content="硅藻泥" Margin="5"/>
<CheckBox Content="涂料" Margin="5"/>
</WrapPanel>
对应的后台代码:
private void selectAll_OnClick(object sender, RoutedEventArgs e)
{
bool flag = selectAllBtn.IsChecked == true ? true : false;
for (int i = 0; i < materialTabItem.Children.Count; i++)
{
var item = materialTabItem.Children[i];
if (item is CheckBox)
{
CheckBox checkBoxItem = (CheckBox)item;
checkBoxItem.IsChecked = flag;
}
}
}
运行效果如下: