I have a DataGrid in my Wpf application.
This DataDrid:
ItemSource="{Bindind SomeDataTable}"
& AutoGenerateColumns="True"
Now I want to Add a Column with CheckBox, and Binding each CheckBox's state with each Row's IsSelected
property in the DataGird.
I have tried to add a CheckBox cloumn with DataGridTemplateColumn,but I can't Bind the checkBox to the Rows' state.
<DataGrid x:Name="TableDataGrid"
Margin="0,0,0,0"
CanUserAddRows="True"
CanUserDeleteRows="True"
CanUserSortColumns="False"
GridLinesVisibility="All"
AutoGenerateColumns="True"
ItemsSource="{Binding TableData.DataInTable, Mode=TwoWay}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background"Value="#e8e8ec"/>
<Setter Property="FontWeight"Value="Bold"/>
<Setter Property="HorizontalContentAlignment"Value="Center"/>
<Setter Property="BorderBrush"Value="Black"/>
<Setter Property="BorderThickness"Value="0.5"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="DataCheckBox"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
You can use AncestorType
:
<DataGrid x:Name="TableDataGrid"
Margin="0,0,0,0"
CanUserAddRows="True"
CanUserDeleteRows="True"
CanUserSortColumns="False"
GridLinesVisibility="All"
AutoGenerateColumns="True"
ItemsSource="{Binding MyList, Mode=TwoWay}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#e8e8ec"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="0.5"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="DataCheckBox" IsChecked="{Binding Path=IsSelected, Mode=TwoWay,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGridRow}}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>