WPF DataGridComboBoxColumn`s ComboBox只在DataGrid有IsReadOnly=FALSE时可见。[英] WPF DataGridComboBoxColumn`s ComboBox is only visible when DataGrid has IsReadOnly=FALSE

本文是小编为大家收集整理的关于WPF DataGridComboBoxColumn`s ComboBox只在DataGrid有IsReadOnly=FALSE时可见。的处理方法,想解了WPF DataGridComboBoxColumn`s ComboBox只在DataGrid有IsReadOnly=FALSE时可见。的问题怎么解决?WPF DataGridComboBoxColumn`s ComboBox只在DataGrid有IsReadOnly=FALSE时可见。问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

为什么当 DataGrid 设置为 IsReadOnly = FALSE 时,该列中的 ComboBox 只能通过双击空单元格才能看到???

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

使用 DataTemplateColumn 一如既往地工作...... DataGridComboBoxColumn 有什么问题?

作品:

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

推荐答案

所有内置的 DataGridColumns 都有两种样式.一种用于单元格未处于编辑模式时,另一种用于单元格处于编辑模式时.通常非编辑模式只显示一个文本块,而不是您可能期望的实际控件(组合框、文本框等).一旦你开始编辑单元格,文本块就会被相应的控件替换.如果您将数据网格设置为 IsReadOnly = true,那么这意味着单元格永远不会进入其编辑模式,这就是您所看到的行为.

在创建 DataGridTemplateColumn 时,您实际上是在替换所有内置的数据网格逻辑.例如,如果您希望您的模板列在数据网格为只读时为只读,则您必须手动将这两个值绑定在一起.如果您想获得与内置列相同的行为(单元格未处于编辑模式时的文本块),那么您必须使用触发器来提供适当的控件模板.

还请注意,如果您使用的是内置列(例如 DataGridCheckBoxColumn)并且您为其指定了 ElmentStyle(例如将复选框居中),那么尽管 datagrid 设置为 IsReadOnly = true,但该列的单元格都是可编辑的.发生这种情况是因为当您指定 ElmentStyle 时,您正在替换内置样式,其中包含在数据网格为只读时将复选框设为只读的逻辑.

本文地址:https://www.itbaoku.cn/post/1794094.html