WPF 可编辑组合框文本搜索行为

Posted

技术标签:

【中文标题】WPF 可编辑组合框文本搜索行为【英文标题】:WPF Editable ComboBox Text Search Behavior 【发布时间】:2011-01-25 09:13:59 【问题描述】:

我有一个 ComboBox,它在 ItemsSource 上绑定了一个实体 ObservableCollection。像这样:

Key    Desc1   Desc2
C0001  myDesc  myDesc
D0001  myDesc  myDesc
A0001  myDesc  MyDesc

组合框是这样定义的:

<ComboBox
   IsEditable=True
   DisplayMemberPath="Key"
   SelectedValuePath="Key"
   ItemsSource="Binding Path=MyList, Mode=OneWay" />

现在我有这个问题...

如果我在组合框的空可编辑文本框中键入一个字符,则匹配“以”键入字符“开头”的第一​​个元素。所以,如果我键入“C”,则选定项是元素“C0001”......我会避免这种情况!

我会使用不同的搜索逻辑,根据输入的全文找到选定项。这样:

Text Typed        SelectedItem
C                 null
C0                null
C00               null
C000              null
C0001             [C0001, myDesc, myDesc] OK!

有可能吗?我该怎么办?

【问题讨论】:

【参考方案1】:

对于 Windows 中的 Combo,这种行为一直是这样的。如果您想做这样的事情,最好使用搜索字段和可选择的结果列表。

另外,TextBox 确实支持不同的自动完成建议模式,但我想你也需要一个下拉菜单。(不,它不支持)。

post 尝试将两者结合起来,非常简洁。

【讨论】:

问题是关于 WPF 而不是 Winforms! 哦,是的,WPF 的文本框没有这些东西……抱歉,现在还早! 没有办法为选定项目扩展基于 ComboBox 的覆盖搜索逻辑?

以上是关于WPF 可编辑组合框文本搜索行为的主要内容,如果未能解决你的问题,请参考以下文章

具有来自 itemsource 或用户输入的选定值(路径)的可编辑组合框

拖放到可编辑的组合框上[重复]

用于 Enter 键的 Java 可编辑 JCombobox Keylistener 事件

在 WPF 数据网格、组合框模板列上单击编辑

MS Access 2010 上的可编辑文本框 - 行为正确吗?

在 WPF / C# 中选择绑定项目后维护组合框文本