【发布时间】:2018-03-21 06:13:33
【问题描述】:
在不打扰您的情况下,有人可以指出我在哪里可以获得默认的 DataGridComboBoxColumn ControlTemplate。我确信必须有一个控件模板或某种针对 DataGridComboBoxColumn 的样式,否则微软是如何构建 DataGridComboBoxColumn 的。
【问题讨论】:
在不打扰您的情况下,有人可以指出我在哪里可以获得默认的 DataGridComboBoxColumn ControlTemplate。我确信必须有一个控件模板或某种针对 DataGridComboBoxColumn 的样式,否则微软是如何构建 DataGridComboBoxColumn 的。
【问题讨论】:
不用担心我打算做什么
我认为这不是那么不重要,因为这些建议在 MSDN 页面DataGridComboBoxColumn Class:
表示一个 DataGrid 列,该列在其承载 ComboBox 控件 细胞。
和
如果您想在 DataGrid 中使用其他控件,您可以创建 使用 DataGridTemplateColumn 您自己的列类型。
对于ComboBox 的样式(也为ControlTemplate!),您可以使用DataGridComboBoxColumn 的ElementStyle 和EditingElementStyle 属性。
您可以在此处找到 ComboBox 的默认模板:ComboBox Styles and Templates
小例子:
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<TextBlock Text={Binding SomePropertyOfYourRowDataContext}/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridComboBoxColumn.ElementStyle>
【讨论】:
谁能指出我在哪里可以获得默认的
DataGridComboBoxColumnControlTemplate。
DataGridComboBoxColumn 不是Control,因此它没有ControlTemplate。
它在其GenerateEditingElement 方法中创建一个ComboBox,当DataGridComboBoxColumn 的单元格处于编辑模式时,您会看到这个ComboBox:https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/DataGridComboBoxColumn.cs,90924e66a85fbfa4。
【讨论】: