ComboBox WPF DataGridComboBoxColumn видим, только когда DataGrid имеет IsReadOnly = FALSE - PullRequest
4 голосов
/ 18 июня 2010

Почему ComboBox в этом столбце отображается только при двойном щелчке в пустой ячейке, если для DataGrid установлено значение IsReadOnly = FALSE ???

 <DataGridComboBoxColumn Width="*" IsReadOnly="False" Header="test" />

с использованием DataTemplateColumn работает как всегда ...что не так с этим DataGridComboBoxColumn?

работает:

<DataGridTemplateColumn Header="Schoolclass">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox Background="Blue" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

1 Ответ

10 голосов
/ 17 июля 2010

Все встроенные столбцы DataGridColumns имеют два стиля.Один, когда ячейка не находится в режиме редактирования, а другой - когда ячейка находится в режиме редактирования.Обычно в режиме без редактирования просто отображается текстовый блок, а не тот элемент управления, который вы ожидаете (ComboBox, TextBox и т. Д.).И как только вы начинаете редактировать ячейку, текстовый блок заменяется на соответствующий элемент управления.Если для сетки данных установлено значение IsReadOnly = true, то это означает, что ячейки никогда не переходят в режим редактирования, и именно такое поведение вы наблюдаете.

При создании DataGridTemplateColumn вам необходимо заменить все встроенные сетки данных.логика.Например, если вы хотите, чтобы ваш шаблонный столбец был доступен только для чтения, когда сетка данных доступна только для чтения, то вам необходимо вручную связать два значения вместе.И если вы хотите получить то же поведение, что и встроенные столбцы (текстовый блок, когда ячейка не находится в режиме редактирования), то вам придется использовать триггеры для предоставления соответствующих шаблонов управления.

Также обратите внимание, что если выИспользует встроенный столбец (например, DataGridCheckBoxColumn), и для него указывается ElmentStyle (например, для центрирования checkBoxes), тогда все ячейки столбца доступны для редактирования, несмотря на то, что для сетки данных установлено значение IsReadOnly = true.Это происходит потому, что при указании ElmentStyle вы заменяете встроенный стиль, который содержит логику, позволяющую сделать флажки доступными только для чтения, когда сетка данных доступна только для чтения.

...