我想知道如何让DataGridComboBoxColumn在未处于编辑模式时显示所选的项目文本?还有可能使编辑模式中的组合框最初显示所选的项目文本吗?
这是我的XAML:
<DataGridComboBoxColumn Header="Formatter"
SelectedItemBinding="{Binding Path=Format}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="">
<Setter Property="Text" Value="{Binding Path=FormatView.Name}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DefinedFormatters}" />
<Setter Property="IsDropDownOpen" Value="True" />
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
答案 0 :(得分:6)
这是DataGridComboBoxColumn上我发现有用的唯一资源:
http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridcomboboxcolumn.aspx
其他所有内容(我在非MSDN网站上找到的)误导!
答案 1 :(得分:3)
好的,经过大量的谷歌搜索,我发现了它。
但是看起来你对ElementStyle做了同样的事情,再次使用目标类型的组合框,即使在不编辑时似乎没有显示ComboBox。
<DataGridComboBoxColumn Header="Formatter" SelectedItemBinding="{Binding Path=Format}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DefinedFormatters}" />
<Setter Property="IsDropDownOpen" Value="True" />
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DefinedFormatters}" />
<Setter Property="IsDropDownOpen" Value="True" />
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
答案 2 :(得分:0)
我很茫然,但可能会尝试以下操作:删除ElementStyle,然后设置DisplayMemberPath,例如:
<DataGridComboBoxColumn Header="Formatter" SelectedItemBinding="{Binding Path=Format}" DisplayMemberPath="Name">
路径也可能是FormatView.Name,我没有清楚的数据结构图。你是如何设置DataGridComboBoxColumn的ItemsSource的?