WPF-DataGrid表头CheckBox反选

前台代码 DataGrid中CheckBox列

<DataGridTemplateColumn Width="26" IsReadOnly="True">
                                    <DataGridTemplateColumn.HeaderTemplate>
                                        <DataTemplate>
                                            <CheckBox Name="checkall" Click="checkall_Click"></CheckBox>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.HeaderTemplate>
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox Name="checkBox" VerticalAlignment="Center" Click="checkBox_Click" HorizontalAlignment="Center"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>

后台代码`
public List ListGuids = new List();

private void checkall_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < dataGrid1.Items.Count; i++)
{
//获取行
DataGridRow neddrow = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);
//获取该行的某列
var cb = dataGrid1.Columns[0].GetCellContent(neddrow);
//获取到需要的列之后在去获取需要的控件
GetVisualChild(cb);
}
}
public void GetVisualChild(DependencyObject parent)
{
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
DependencyObject v = (DependencyObject)VisualTreeHelper.GetChild(parent, i);
CheckBox child = v as CheckBox;
SectionEntity stEnt = child.DataContext as SectionEntity;
if (child.IsChecked == true)
{
child.IsChecked = false;
ListGuids = new List();
return;
}
else
{
child.IsChecked = true;
ListGuids.Add(stEnt.SectionID);

            }
        }
    }
    private void checkBox_Click(object sender, RoutedEventArgs e)
    {
        CheckBox ck = sender as CheckBox;
        SectionEntity stEnt = ck.DataContext as SectionEntity;
        bool? isChecked = ck.IsChecked;
        if (isChecked == null ? false : isChecked.Value)
        {
            ListGuids.Add(stEnt.SectionID);
        }
        else
        {
            ListGuids.Remove(stEnt.SectionID);
        }
    }

`

猜你喜欢

转载自blog.csdn.net/u014311306/article/details/78812486