21

我有一个 WPF ,我想在键入该字母时ComboBox转到以(例如)“e”开头的项目。ComboBox如何?

我的 XAML 代码:

<ComboBox ItemsSource="{Binding Roles}" SelectedValuePath="Id"
          ItemTemplate="{StaticResource ComboBoxDisplayName}"
          SelectedItem="{Binding SelectedRole}"
          Width="150"/> 
4

3 回答 3

26

编辑:我猜你有一个ItemTemplate看起来有点像这样的:

<StackPanel>
    <TextBlock Text="{Binding Path=Foo}" />
    <TextBlock Text="{Binding Path=Bar}" />
</StackPanel>

如果您想在 Foo 上搜索,请尝试...

<ComboBox IsEditable = "True" TextSearch.TextPath = "Foo" />

默认情况下 aComboBox有一种自动完成功能,可以根据第一个字母查找匹配项 - 假设您的源是按字母顺序排序的,这会将所选项目转移到(例如)以“e”开头的部分。

如果您希望多个条目KeyDown以相同的字母开头,则强制打开下拉菜单可能会很有用。

于 2010-02-05T10:44:37.500 回答
15

假设您的项目按字母顺序排序,只需设置IsTextSearchEnabled="True"应该跳转到以您输入的字母(或多个字母)开头的项目ComboBox

这是我的一个例子ComboBox,我已经简化了绑定,因为它显然不是这里的重要部分......

<ComboBox ItemsSource="{Binding MyObjectList}"
          DisplayMemberPath="Description"
          SelectedValuePath="Code"
          IsTextSearchEnabled="True"/>

这非常适合从列表中选择一个值,但是,您键入的搜索值不会显示在控件的 TextBox 部分,因为我已IsEditable设置为 false。

如果有人想解释为什么这被否决了,我将不胜感激,我认为我提供的答案没有任何问题,也看不出为什么当我只是想提供帮助时我应该失去声誉(并提供了合理的答案!)

于 2010-02-05T09:40:19.803 回答
0

我所要做的就是添加以下内容:

TextSearch.TextPath="<what ever you bound to goes here> ie:State or name "
于 2014-06-05T17:40:00.367 回答