0

我在我的应用程序中使用了一个组合框,并用类似这样的类填充它:

namespace Foo.Bar{
     public class Item
     {
          public string lastName;
          public string firstName;
          public Foo theMeatyPart;
     }
}

我可以使用 itemTamplate 使用“lastName,firstName”填充下拉列表,但随后所选值显示为“Foo.Bar.Item”。如何将相同的模板应用于 selectedItem 并且在不覆盖 Item 的 ToString 方法的情况下使搜索功能正常工作?

这是xaml:

<Style x:Key="SearchComboStyle" TargetType="ComboBox">
                <Style.Setters>
                    <Setter Property="Width" Value="150"></Setter>
                </Style.Setters>
            </Style>
            <DataTemplate x:Key="SearchComboItemTemplate" >
                    <TextBlock DataContext="{Binding}">
                            <TextBlock.Text>
                              <MultiBinding StringFormat="{}{0}, {1}">
                                <Binding Path="lastName"/>
                                <Binding Path="firstName"/>
                              </MultiBinding>
                            </TextBlock.Text>
                    </TextBlock>
            </DataTemplate>


<ComboBox  ItemTemplate="{StaticResource SearchComboItemTemplate}" Style="{StaticResource SearchComboStyle}" 
                    ItemsSource="{Binding Path=PhysiciansList, RelativeSource={RelativeSource AncestorType=local:ExamViewerControl, AncestorLevel=1}}"      IsTextSearchEnabled="True" IsTextSearchCaseSensitive="False" IsEditable="True" TextSearch.TextPath="Person.LastName" />         
4

1 回答 1

5

升级版:看起来你需要设置SelectionBoxItemTemplate.

您可以使用DisplayMemberPathTextSearch.TextPath来启用搜索,而无需修改 ToString()。

于 2012-04-18T14:00:09.450 回答