0

データ テンプレート セレクターを使用する場合、WPF コンボボックスに関して問題があります。

基本的に、WPF コンボボックスには標準的な動作があり、キーボードを使用してその文字を入力すると、その文字から始まる項目に直接移動します。この機能の正式名称はわかりませんが、一時的に「キー インデックス」と呼ぶことにします。

アイテムを別の方法で表示する ComboBox を作成したいと思います。DataTemplateSelector を使用してこれを実現しました。

    <ComboBox SelectedItem="{Binding Selection}" x:Name="Input" ItemsSource="{Binding Parties}">
        <ComboBox.ItemTemplateSelector>
            <Editor:PartyTemplateSelector DefaultTemplate="{StaticResource Default}" NewTemplate="{StaticResource New}" OldTemplate="{StaticResource Old}"/>
        </ComboBox.ItemTemplateSelector>
    </ComboBox>

PartyTemplateSelector は次のとおりです。

public class PartyTemplateSelector : DataTemplateSelector
{
    public DataTemplate DefaultTemplate
    {
        get; set;
    }

    public DataTemplate NewTemplate
    {
        get; set;
    }

    public DataTemplate OldTemplate
    {
        get; set;
    }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        var party = (Party) item;
        if (party is OldDisplay)
        {
            return OldTemplate;                
        }

        if(counterparty.NewLook)
        {
            return NewTemplate;
        }
        return DefaultTemplate;
    }
}

キーのインデックス作成機能が失われることを除けば、正常に機能します。コンボボックスがドロップダウンされているときにキーを入力すると、入力した文字から始まるアイテムに移動しません。

誰でもこれで私を助けることができますか?

よろしく。

4

2 に答える 2

0

IsTextSearchEnabled を試してください ( http://khason.net/blog/autocomplete-textbox-in-wpf-well-almost/ )

于 2010-09-21T12:28:58.360 に答える
0

「 prop <TextSearch.TextPath="prop" />」は、キープレスとの一致を調べたいプロパティへのパスである必要があります。

編集: もちろん、別のタグとしてではなく、ComboBox タグ内で直接使用できます。

于 2010-09-21T18:44:18.047 に答える