JimiJimi
JimiJimi

Reputation: 1

How to add a CheckBoxColumn into a DataGrid which is Auto created

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>

Upvotes: 0

Views: 271

Answers (1)

Dilshod K
Dilshod K

Reputation: 3032

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>

Upvotes: 1

Related Questions