3

WPF MVVM アプリケーションで 2 つの列を表示する WPF コンボボックスで検索を有効にする必要があります。

以下は、次のような2つの列を表示している私のコードです:名 - 姓

    <ComboBox Grid.Column="3" Grid.Row="15" Height="Auto" HorizontalAlignment="Stretch" 
                Name="cmbName" VerticalAlignment="Stretch"
                SelectedItem="{Binding Name, Mode=TwoWay}"
                ItemsSource="{Binding GetAllName}"
                IsTextSearchEnabled="True">

        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock DataContext="{Binding}">
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{}{0} - {1}">
                                <Binding Path="FirstName" />
                                <Binding Path="LastName" />
                            </MultiBinding>
                        </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

このシナリオでは、 IsTextSearchEnabled は何の役割も果たしていないと思います。

これについて何か助けはありますか?

4

2 に答える 2

-2

あなたは少し混乱しているようです。まず、に2 つの列が表示されていませんComboBox。2 つのフィールド値が表示されています。誤解を招くようなタイトルを編集する必要がありますか?

IsTextSearchEnabled第二に、あなたがその物件の使用法を完全に理解しているとは思えません。ただし、このプロパティをそのまま使用しても何も達成されないことは正しいです。MSDNのItemsControl.IsTextSearchEnabledプロパティページから:

ItemsControl インスタンスで TextSearch が有効かどうかを示す値を取得または設定します。

MSDNのTextSearchクラスページから:

このクラスは、コントロールのコレクション内の項目に文字列を割り当てるために使用されます。コレクション内の各項目に文字列を割り当てると、2 つの目的が達成されます。項目が選択されたときに表示するテキストを指定し、ユーザーが割り当てられた文字列を入力して項目を選択できるようにします。

たとえば、ComboBox に Image オブジェクトのコレクションが含まれており、そのうちの 1 つは犬のイメージであるとします。その項目に文字列 "Dog" を割り当てると、ユーザーはコンボ ボックスのテキスト ボックスに単語を入力して犬を選択できます。ユーザーが選択項目内の他の項目と区別するのに十分な単語を入力するとすぐに、犬の画像が選択されます。ComboBox で IsEditable が true に設定されている場合、テキスト ボックスに「Dog」が表示されます。

コントロールで TextSearch.TextPath プロパティを使用するか、コントロールのコレクション内の各項目で Text プロパティを設定することにより、項目を識別するテキストを指定できます。これらのプロパティのいずれかを設定すると、予期しないテキストが表示されなくなります。コントロールのコレクション項目に Text プロパティを設定すると、TextPath プロパティは無視されます。TextPath プロパティを実際のプロパティの名前ではない値に設定すると、TextPath は無視されます。

于 2013-10-29T11:19:43.350 に答える