使用数据模板选择器时,我遇到有关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;
}
}
除了密钥索引能力丢失之外,它还可以正常工作。当组合框放下时我键入一个键,它不会将我带到从我输入的字符开始的项目。
任何人都可以帮我吗?
问候。
答案 0 :(得分:0)
尝试使用IsTextSearchEnabled(http://khason.net/blog/autocomplete-textbox-in-wpf-well-almost/)
答案 1 :(得分:0)
尝试<TextSearch.TextPath="prop" />
其中'prop'应该是您要检查与按键匹配的属性的路径。
编辑:当然,您可以直接在ComboBox标签内使用它,而不是单独使用它。