我有一个可编辑的组合框,我正在使用使用MultiBinding的ItemTemplate。展开组合框时显示的项目按我的预期显示。但是,当选择项目时,显示的文本是对象类型。我看过建议覆盖 ToString() 的帖子,但如果可能的话,我想避免这种情况。
我绑定到的对象是 UserDetail 对象的集合,其中 UserDetail 具有名字和姓氏以及条形码 ID,我将其显示为 ComboBox 中每个项目的字符串。我想显示与所选项目相同的字符串。相反,我看到的是MyNameSpace.UserDetail。
这是我的组合框的 xaml。请告诉我哪里出错了:
<ComboBox IsEditable="True" IsReadOnly="False" Name="myUser"
TextBoxBase.TextChanged="myCombo_TextChanged"
SelectionChanged="myCombo_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{1}, {0}, {2}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
<Binding Path="BarcodeId" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
仅供参考,条形码ID用于可选的条形码徽章阅读器。
应仅将文本数据绑定到具有 IsEditable = true 的组合框。
删除IsEditable="True"
有关更多信息,请参阅此处。
设置属性
TextSearch.TextPath="your_binding_property_path"。
从 http://www.shujaat.net/2010/08/wpf-editable-combobox-with-datatemplate.html