前台代码 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);
}
}
`