0

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

除了失去关键索引能力之外,它工作正常。当我在下拉组合框时键入一个键时,它不会将我带到从我键入的字符开始的项目。

谁能帮我这个?

问候。

4

2 回答 2

0

试试 IsTextSearchEnabled ( http://khason.net/blog/autocomplete-textbox-in-wpf-well-almost/ )

于 2010-09-21T12:28:58.360 回答
0

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

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

于 2010-09-21T18:44:18.047 回答