Прежде всего, ваше утверждение о том, что если вы удалите либо ElementStyle
, либо EditingElementStyle
, решит, что проблема неверна, то какие винты вы перебрали, это ElementStyle
.
Дело в том, что для осуществления редактирования сетка данных должна переключиться на шаблон редактирования, что обычно происходит при щелчке мыши, однако, поскольку CheckBox
обрабатывает событие щелчка мыши, сетка данных никогда не получает и никогда не переходит в режим редактирования, что не позволяет вашим изменениям когда-либо достигать ваших объектов данных (оно остается в представлении данных, но не передается исходным данным).
Теперь вы можете спросить, почему поведение по умолчанию в порядке? Хорошо, если вы посмотрите на значение по умолчанию свойства ElementStyle
, вы заметите, что оно устанавливает для IsHitTestVisible
и Focusable
значение false. Это препятствует тому, чтобы CheckBox
обрабатывал щелчок мыши (или событие клавиатуры), который изменяет его состояние, и позволяет сетке данных получать их, таким образом давая ему возможность войти в режим редактирования и переключиться на EditingElementStyle
, который не влияет на фокусируемость и тестируемость ударов.
Посмотрите в этой записи блога пример того, как сделать это правильно Когда флажок WPF DataGrid только для чтения не доступен только для чтения?