下面的绑定获取并设置所选项目。它还正确显示项目,在这种情况下只是表示显示部门的名称。
但是,它不显示所选部门名称,而是显示所选部门的ToString()。
如何解决此问题,以便所选项目仅显示部门名称?
干杯,
Berryl
<ComboBox
Style="{StaticResource ComboBoxStyle}"
ItemContainerStyle="{StaticResource ComboBoxItemStyle}"
ItemsSource="{Binding Path=Departments}"
SelectedItem="{Binding Path=Department, Mode=TwoWay}"
IsSynchronizedWithCurrentItem="True"
DisplayMemberPath="Name"
/>
答案 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;
}