我在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>
任何想法都表示赞赏。
答案 0 :(得分:0)
ComboBox内置支持使用键盘进行增量搜索。我实际上并没有使用它(所以我对高级故障排除没有帮助)但我知道它就在那里。
看起来你需要将ComboBox的IsTextSearchEnabled属性设置为true,然后将TextSearch.TextPath附加属性设置为要搜索的文本的绑定路径(可能是“Name”到与您的TextBlock文本对应。)