【问题标题】:WPF DataGridComboBoxColumn`s ComboBox is only visible when DataGrid has IsReadOnly=FALSEWPF DataGridComboBoxColumn 的 ComboBox 仅在 DataGrid 具有 IsReadOnly=FALSE 时可见
【发布时间】:2011-03-05 11:15:28
【问题描述】:

为什么当 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>

【问题讨论】:

    标签: wpf visible datagridcomboboxcolumn readonly-attribute


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 2013-12-27
      • 2012-05-06
      • 2017-08-05
      • 1970-01-01
      相关资源
      最近更新 更多