ComboBox SelectedItem显示

时间:2011-01-14 06:28:27

标签: wpf data-binding combobox

下面的绑定获取并设置所选项目。它还正确显示项目,在这种情况下只是表示显示部门的名称。

但是,它不显示所选部门名称,而是显示所选部门的ToString()。

如何解决此问题,以便所选项目仅显示部门名称?

干杯,
Berryl

<ComboBox 
    Style="{StaticResource ComboBoxStyle}" 
    ItemContainerStyle="{StaticResource ComboBoxItemStyle}"

    ItemsSource="{Binding Path=Departments}" 
    SelectedItem="{Binding Path=Department, Mode=TwoWay}" 
    IsSynchronizedWithCurrentItem="True" 
    DisplayMemberPath="Name"
/>

2 个答案:

答案 0 :(得分:1)

我能够通过将DisplayMemberPath更改为DataTemplate来解决问题,如下所示。

虽然我不确定为什么DisplayMemberPath在这里不起作用,我不得不假设我的代码中有一些其他错误。作为一个老问题,代码已经改变,不值得重新创建。

顺便说一句,我现在经常使用DataTemplates,即使是像这样的简单案例。

干杯,
Berryl

<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Name}" />
    </DataTemplate>
</ComboBox.ItemTemplate>

答案 1 :(得分:1)

这是因为.Net框架在每个可观察集合项上调用ToString()方法。要解决此问题,您可以在模型中覆盖ToString()方法,如下所示:

public override string ToString()
{
    return this.Name;
}