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

UPD:SelectionBoxItemTemplateを設定する必要があるようです

DisplayMemberPathまたはTextSearch.TextPathを使用して、ToString()を変更せずに検索を有効にすることができます。

于 2012-04-18T14:00:09.450 に答える