Cómo obtener el valor de una columna de plantilla en una cuadrícula de datos WPF.

Obtuve una cuadrícula de datos que incluye una columna de casilla de verificación. Hice una modificación a ese formulario mediante el uso de una casilla de verificación multiselección para verificar todas las filas a la vez. Y funcionó. pero no pude obtener el valor de esa columna de casilla de verificación cuando la aplicación se está ejecutando porque no estaba seguro de cómo acceder a la columna de datos. ¿Alguien puede ayudarme con una forma de obtener el valor de la casilla de verificación (verdadero / falso). Esto es lo que hice hasta ahora.

Código xaml

<DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path= Id}" Header="Id" Visibility="Hidden"/>
            <DataGridTextColumn Binding="{Binding Path= Category}" Header="Category" Width="320"/>
            <!--<DataGridCheckBoxColumn Binding="{Binding Path= Check}" Width="*"/>-->

            <DataGridTemplateColumn>
                <DataGridTemplateColumn.Header>
                    <CheckBox x:Name="headerCheckBox" />
                </DataGridTemplateColumn.Header>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Name="chkSelectAll" HorizontalAlignment="Center" IsChecked="{Binding IsChecked, ElementName=headerCheckBox, Mode=OneWay}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

        </DataGrid.Columns>

Código: C #

for (int i = 0; i < datagridview.Items.Count; i++)
            {
                ÇategoryData CD = (ÇategoryData)datagridview.Items[i];
                if (CD.Check == true)
                {
                    //it always returns false even checked 
                }
            }

Respuestas a la pregunta(2)

Su respuesta a la pregunta