代码之家  ›  专栏  ›  技术社区  ›  msfanboy

只有当DataGrid的IsReadOnly=false时,WPF DataGridComboxColumn的ComboBox才可见。

  •  4
  • msfanboy  · 技术社区  · 16 年前

    当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 回复  |  直到 8 年前
        1
  •  10
  •   Marko    16 年前

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

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

    另外,请注意,如果使用内置列(如DataGridCheckBoxColumn),并且为其指定了一个ELmentStyle(例如使复选框居中),则尽管DataGrid设置为IsReadOnly=true,但列的单元格都是可编辑的。这是因为当您指定一个ELMEntStyle时,您将替换内置样式,该样式包含使复选框在DataGrid为只读时为只读的逻辑。