使用数据模板选择器时WPF ComboBox密钥索引不起作用

时间:2010-09-21 11:58:28

标签: c# wpf xaml combobox datatemplateselector

使用数据模板选择器时,我遇到有关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;
    }
}

除了密钥索引能力丢失之外,它还可以正常工作。当组合框放下时我键入一个键,它不会将我带到从我输入的字符开始的项目。

任何人都可以帮我吗?

问候。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

尝试<TextSearch.TextPath="prop" />其中'prop'应该是您要检查与按键匹配的属性的路径。

编辑:当然,您可以直接在ComboBox标签内使用它,而不是单独使用它。