Please refer to the attached sample project and gif file. The ShouldCheckDataRows property of the column is disabled. Hence, the developer will manage the toggle state of the data cells.
There are two problems here:
1. In the HeaderCellToggleStateChanged event we toggle all data rows in correspondence with the header checkbox. Once a data cell value is changed, we set the GridViewCheckBoxColumn.Checked property to Off. However, it is not respected and the header checkbox still remains toggle.
2. Once you scroll the columns horizontally, the header checkbox synchronizes with the value of the GridViewCheckBoxColumn.Checked property. However, all of a sudden the HeaderCellToggleStateChanged event is toggled again even though we didn't clicked the checkbox in the header at all. This will make all data cells unchecked due to the code in the HeaderCellToggleStateChanged event.