2011-01-14 86 views
1

下面的绑定获取并设置选定的项目。它也正确显示项目,在这种情况下,这意味着显示部门的名称。组合框SelectedItem显示

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

我该如何解决这个问题,以便所选项目只显示部门名称?

干杯,
Berryl

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

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

“而不是显示选定部门名称,它显示所选部门的ToString()。” u能请解释更多关于这个 – Binil 2011-01-14 06:42:50

回答

1

这是因为Net框架调用每个观察的集合项目ToString()方法。为了解决这个问题,你可以在你的型号覆盖ToString()方法是这样的:

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

我能够通过如下所示改变的DisplayMemberPath到一个DataTemplate来解决这个问题。

尽管我不确定为什么DisplayMemberPath在这里不起作用,但我必须假设我的代码中有一些其他错误。作为一个老问题,代码已经改变,不值得重新创建。另外,我现在经常使用DataTemplates,即使是像这样的简单情况。

干杯,
Berryl

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