使用数据模板选择器时,我遇到了关于 WPF 组合框的问题。
基本上,WPF 组合框具有标准行为,如果您使用键盘键入该字符,它将直接将您带到从该字符开始的项目。我不知道这个功能的正式名称,暂时称它为“Key Indexing”。
我现在想创建一个以不同方式显示其项目的 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;
}
}
除了失去关键索引能力之外,它工作正常。当我在下拉组合框时键入一个键时,它不会将我带到从我键入的字符开始的项目。
谁能帮我这个?
问候。