WPF ComboBox使用快捷键来选择项目

时间:2011-10-12 17:58:37

标签: wpf combobox selection shortcuts

我在WPF中有一个使用以下数据模板的组合框。在论坛的帮助下,我能够显示并正常运行。

当下拉列表打开时,我希望用户能够键入一个字母并让下拉菜单跳转到该选择。我已经看到这实现了两种方式,一种方法是在组合框的文本框中基本捕获键盘输入,并根据用户输入的内容进行选择。这允许用户等待并键入更多添加到条件的文本。另一个是键盘输入似乎没有被捕获的地方,如果你输入一个字母,等待几秒钟,然后输入另一个字母,它会从你键入的第二个字母开始选择。如果要键入搜索条件的多个字母,则必须快速键入它们。

我对任何一种方法都很满意。他们只能在列表中选择一个项目,所以我真的不喜欢在组合框上放置编辑控件的想法,他们可以输入他们想要的任何内容。我可以这样做,而不是验证他们的输入,但宁愿强迫他们选择列表中的内容。

在这种情况下,它是一个系统颜色列表,超过140个系统颜色,因此有一种快速绕过列表的方法是我需要的。

这是我正在使用的数据模板。

    <DataTemplate x:Key="ColorSelectionComboBox" DataType="ComboBox">
        <StackPanel Orientation="Horizontal">
            <Rectangle Width="16" Height="16" Margin="0,2,4,2">
                <Rectangle.Fill>
                    <SolidColorBrush Color="{Binding Color}"/>
                </Rectangle.Fill>
            </Rectangle>
            <TextBlock Text="{Binding Name}"/>
        </StackPanel>
    </DataTemplate>

任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:0)

ComboBox内置支持使用键盘进行增量搜索。我实际上并没有使用它(所以我对高级故障排除没有帮助)但我知道它就在那里。

看起来你需要将ComboBox的IsTextSearchEnabled属性设置为true,然后将TextSearch.TextPath附加属性设置为要搜索的文本的绑定路径(可能是“Name”到与您的TextBlock文本对应。)