Все встроенные DataGridColumns имеют два стиля. Один из них, когда ячейка не находится в режиме редактирования, и когда ячейка находится в режиме редактирования. Обычно режим редактирования не отображает текстовый блок, а не фактический элемент управления, который вы можете ожидать (ComboBox, TextBox и т. Д.). И как только вы начнете редактировать ячейку, текстовый блок заменяется соответствующим элементом управления. Если у вас есть набор данных, равный IsReadOnly = true, это означает, что ячейки никогда не переходят в режим редактирования, и это поведение, которое вы видите.
При создании DataGridTemplateColumn вы существенно замените всю встроенную логику datagrid. В качестве примера, если вы хотите, чтобы ваш шаблонный столбец был только для чтения, когда datagrid только для чтения, вам необходимо вручную связать два значения вместе. И если вы хотите получить то же поведение, что и встроенные столбцы (текстовый блок, когда ячейка не находится в режиме редактирования), вам придется использовать триггеры для предоставления соответствующих контрольных шаблонов.
Также обратите внимание, что если вы используете встроенный столбец (например, DataGridCheckBoxColumn) и используете для него ElmentStyle (например, для центрирования checkbox), то ячейки столбца могут быть доступны для редактирования, несмотря на то, что datagrid устанавливается в IsReadOnly = true , Это происходит потому, что, когда вы указываете ElmentStyle, вы заменяете встроенный стиль, который содержит логику, чтобы делать флажки только для чтения, когда datagrid только для чтения.
уже нашли это ;-) Но славное резюме :) – msfanboy