当DataGridComboBoxColumn未处于编辑模式时显示不同的文本

时间:2014-04-29 11:31:09

标签: wpf datagrid datagridcomboboxcolumn

我有一个DataGridComboBoxColumn,它绑定到一个对象集合,其类型是MyItem。 MyItem有两个字符串属性:描述和快捷方式。

如果列不处于编辑模式,我想显示快捷方式属性中的字符串,如果列处于编辑模式,我想显示描述属性中的字符串。

如果没有DataGridTemplateColumn,这可能吗?

更多信息: 目前我已将DisplayMemberPath属性设置为“Description”。

1 个答案:

答案 0 :(得分:2)

我发现,最好的方法是使用DataGridTemplateColumn代替DataGridComboBoxColumn

DataGridComboBoxColumn不公开CellTemplate(不编辑时显示)或CellEditingTemplate(编辑时显示),而是为您构建ComboBox模板在你提交列的绑定上。由于您希望这些不同,因此您需要一个公开这两个成员的列,即DataGridTemplateColumn

只需将CellTemplate一个Label绑定到您的Shortcut媒体资源,CellEditingTemplate一个ComboBox使用与您提供的绑定相同的绑定{1}}。

毕竟,你的专栏看起来应该是这样的

DataGridComboBoxColumn

附录 - 我在此提倡<DataGridTemplateColumn Header="..."> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Label Content="{Binding Shortcut}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <ComboBox ItemsSource="..." DisplayMemberPath="Description" SelectedItem="..."/> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn> 使用Label的原因是TextBlock自动包含对齐和边距。 Label,缺少这些,看起来很奇怪,需要一些按摩才能看起来正确。