Wpf DataGridComboxColumn未处于编辑模式时显示不同的文本
我有一个DataGridComboxColumn,它绑定到类型为MyItem的对象集合。MyItem有两个字符串属性:描述和快捷方式 如果列未处于编辑模式,我希望显示快捷方式属性中的字符串;如果列处于编辑模式,我希望显示描述属性中的字符串 如果没有DataGridTemplateColumn,这可能吗 进一步资料:Wpf DataGridComboxColumn未处于编辑模式时显示不同的文本,wpf,datagrid,datagridcomboboxcolumn,Wpf,Datagrid,Datagridcomboboxcolumn,我有一个DataGridComboxColumn,它绑定到类型为MyItem的对象集合。MyItem有两个字符串属性:描述和快捷方式 如果列未处于编辑模式,我希望显示快捷方式属性中的字符串;如果列处于编辑模式,我希望显示描述属性中的字符串 如果没有DataGridTemplateColumn,这可能吗 进一步资料: 目前,我已经将DisplayMemberPath属性设置为“Description”。我发现,最好的方法是使用DataGridTemplateColumn而不是DataGridCom
目前,我已经将DisplayMemberPath属性设置为“Description”。我发现,最好的方法是使用
DataGridTemplateColumn
而不是DataGridComboxColumn
DataGridComboxColumn
既不公开CellTemplate
(未编辑时显示)也不公开CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即DataGridTemplateColumn
只需将CellTemplate
a标签
绑定到您的快捷方式
属性,将CellEditingTemplate
a组合框
与您为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>
附录-我之所以提倡使用
标签
而不是文本块
,是因为标签
自动包括对齐和边距TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。我发现,最好的方法是使用DataGridTemplateColumn
而不是DataGridComboBoxColumn
DataGridComboxColumn
既不公开CellTemplate
(未编辑时显示)也不公开CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即DataGridTemplateColumn
只需将CellTemplate
a标签
绑定到您的快捷方式
属性,将CellEditingTemplate
a组合框
与您为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>
附录-我之所以提倡使用
标签
而不是文本块
,是因为标签
自动包括对齐和边距TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。我发现,最好的方法是使用DataGridTemplateColumn
而不是DataGridComboBoxColumn
DataGridComboxColumn
既不公开CellTemplate
(未编辑时显示)也不公开CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即DataGridTemplateColumn
只需将CellTemplate
a标签
绑定到您的快捷方式
属性,将CellEditingTemplate
a组合框
与您为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>
附录-我之所以提倡使用
标签
而不是文本块
,是因为标签
自动包括对齐和边距TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。我发现,最好的方法是使用DataGridTemplateColumn
而不是DataGridComboBoxColumn
DataGridComboxColumn
既不公开CellTemplate
(未编辑时显示)也不公开CellEditingTemplate
(编辑时显示),而是根据您提供给该列的绑定为您构建ComboBox
模板。由于希望这两个成员不同,因此需要一个列来公开这两个成员,即DataGridTemplateColumn
只需将CellTemplate
a标签
绑定到您的快捷方式
属性,将CellEditingTemplate
a组合框
与您为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>
附录-我之所以提倡使用
标签
而不是文本块
,是因为标签
自动包括对齐和边距TextBlock
,缺少这些,看起来很奇怪,需要一些按摩才能正确查看。谢谢您的示例。我的希望是不使用DataGridTemplateColumn,但我想这是不可能的:/如果你真的想,你也可以使用datagridcombobox列,并使用样式覆盖CellTemplate。但是,这可能不起作用(在