选中时具有多绑定显示对象类型的WPF可编辑组合框

时间:2012-05-11 16:36:48

标签: wpf combobox multibinding

我有一个可编辑的组合框,我使用的是使用MultiBinding的ItemTemplate。组合框展开时显示的项目按我的预期显示。但是,当选择项目时,显示的文本是对象类型。我已经看到了建议覆盖ToString()的帖子,但如果可能的话,我想避免这种情况。

我绑定的对象是UserDetail对象的集合,其中UserDetail有一个名字和姓氏以及一个BarcodeID,我将其显示为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>

仅供参考,BarcodeID适用于可选的条形码徽章阅读器。

2 个答案:

答案 0 :(得分:0)

您应该只将文本数据绑定到具有IsEditable = true的组合框。

删除IsEditable="True"

有关详细信息,请参阅here

答案 1 :(得分:-2)

设置属性

  

TextSearch.TextPath = “your_binding_property_path”。

来自http://www.shujaat.net/2010/08/wpf-editable-combobox-with-datatemplate.html