我有一个WPF ComboBox
,当我输入该字母时,我想转到ComboBox
中以(例如)“e”开头的项目。怎么样?
我的XAML代码:
<ComboBox ItemsSource="{Binding Roles}" SelectedValuePath="Id"
ItemTemplate="{StaticResource ComboBoxDisplayName}"
SelectedItem="{Binding SelectedRole}"
Width="150"/>
答案 0 :(得分:23)
编辑:我猜你有ItemTemplate
看起来有点像这样:
<StackPanel>
<TextBlock Text="{Binding Path=Foo}" />
<TextBlock Text="{Binding Path=Bar}" />
</StackPanel>
如果您想搜索Foo,请尝试...
<ComboBox IsEditable = "True" TextSearch.TextPath = "Foo" />
默认情况下,ComboBox
有一种基于第一个字母查找匹配项的自动填充功能 - 假设您的源按字母顺序排序,这会将所选项目移动到(例如)以“e”开头的部分。
如果您希望以相同的字母开头的多个条目,捕获KeyDown
以强制打开下拉列表可能会有用。
答案 1 :(得分:13)
假设您的商品按字母顺序排序,只需设置IsTextSearchEnabled="True"
即可跳转到您在ComboBox
键入的字母(或字母)开头的商品。
以下是我ComboBox
之一的示例,我简化了绑定,因为它显然不是这里的重要部分......
<ComboBox ItemsSource="{Binding MyObjectList}"
DisplayMemberPath="Description"
SelectedValuePath="Code"
IsTextSearchEnabled="True"/>
这适用于从列表中选择值,但是,您输入的搜索值不会显示在控件的TextBox部分中,因为我将IsEditable
设置为false。
如果有人想解释为什么会被投票,我将不胜感激,我没有看到我提供的答案有任何问题,也不明白为什么我只有在我只是失去声誉的时候试图提供帮助(并提供了合理的答案!)
答案 2 :(得分:0)
我所要做的就是添加以下内容:
TextSearch.TextPath="<what ever you bound to goes here> ie:State or name "