データ テンプレート セレクターを使用する場合、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;
}
}
キーのインデックス作成機能が失われることを除けば、正常に機能します。コンボボックスがドロップダウンされているときにキーを入力すると、入力した文字から始まるアイテムに移動しません。
誰でもこれで私を助けることができますか?
よろしく。