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