xaml前台代码:
<my:DataGrid Name="DnProgressData" Grid.Row="0" Style="{StaticResource DataGridStyle}" >
<my:DataGrid.Columns>
<my:DataGridTemplateColumn Header="复选框" DisplayIndex="9" MinWidth="100" >
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<CheckBox Name="CheckBoxDN" Tag="{Binding Path=DeliveryOrder}" HorizontalAlignment="Center"></CheckBox>
</StackPanel>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
</my:DataGrid.Columns>
</my:DataGrid>
要获得CheckBox 的值,后台代码如下:
for (int k = 0; k < this.DnProgressData.Items.Count; k++)
{
//首先获取DataGridTemplateColumn所在列
DataGridTemplateColumn tempColumn = this.DnProgressData.Columns[9] as DataGridTemplateColumn;
//然后获取DataGridTemplateColumn单元格元素
FrameworkElement element = this.DnProgressData.Columns[9].GetCellContent(this.DnProgressData.Items[k]);
if (element != null)
{
//把单元格元素转换为相应的控件,再从该控件中取值
CheckBox ck = tempColumn.CellTemplate.FindName("CheckBoxDN", element) as CheckBox;
if (ck.IsChecked.Value)
{
//do something here
}
}
}