21

WPFがあり、その文字を入力するときにComboBox(たとえば)「e」で始まるアイテムに移動したいと思います。ComboBoxどのように?

私のXAMLコード:

<ComboBox ItemsSource="{Binding Roles}" SelectedValuePath="Id"
          ItemTemplate="{StaticResource ComboBoxDisplayName}"
          SelectedItem="{Binding SelectedRole}"
          Width="150"/> 
4

3 に答える 3

26

編集:私はあなたがItemTemplateこのように少し見えるものを持っていると思います:

<StackPanel>
    <TextBlock Text="{Binding Path=Foo}" />
    <TextBlock Text="{Binding Path=Bar}" />
</StackPanel>

Fooで検索したい場合は、試してみてください...

<ComboBox IsEditable = "True" TextSearch.TextPath = "Foo" />

デフォルトでComboBoxは、aには、最初の文字に基づいて一致を検索する一種のオートコンプリートがあります。ソースがアルファベット順に並べ替えられているとすると、選択したアイテムが(たとえば)「e」で始まるセクションに移動します。

ドロップダウンを強制的に開くようにキャッチKeyDownすると、同じ文字で始まる複数のエントリが予想される場合に役立つことがあります。

于 2010-02-05T10:44:37.500 に答える
15

アイテムがアルファベット順にソートされていると仮定すると、設定を行うだけIsTextSearchEnabled="True"で、に入力した1つまたは複数の文字で始まるアイテムにジャンプする必要がありますComboBox

これが私のesの例です。ここではComboBox明らかに重要な部分ではないため、バインディングを簡略化しました...

<ComboBox ItemsSource="{Binding MyObjectList}"
          DisplayMemberPath="Description"
          SelectedValuePath="Code"
          IsTextSearchEnabled="True"/>

IsEditableこれは、リストから値を選択する場合に完全に機能しますが、falseに設定したため、入力した検索値はコントロールのTextBox部分に表示されません。

なぜこれが却下されたのかを誰かが説明したいのであれば、私が提供した答えに問題はなく、私が助けようとしているだけで評判を失うに値する理由もわかりません(そして合理的な答えを提供しました!)

于 2010-02-05T09:40:19.803 に答える
0

私がしなければならなかったのは、以下を追加することだけでした:

TextSearch.TextPath="<what ever you bound to goes here> ie:State or name "
于 2014-06-05T17:40:00.367 に答える