我需要这个WPF ComboBox作为一个下拉列表,其中用户不能输入文本像文本框,但仍然能够通过键入文本搜索。
我设置了IsEditable = false和IsTextSearchEnabled = true,它就可以工作了。
但问题是,假设用户正在搜索文本"Japan“。用户使用"J“开始向组合框中输入文本。一些以"J“开头的项目会出现在下拉面板的筛选列表中。现在,如果用户等待3-4秒,然后键入"a“(完成键入"Japan"),则过滤后的列表将移动到以"a”开头的项目。
它应该搜索"Ja“,但它搜索"a”并丢弃"J“。
你知道我该怎么解决这个问题吗?
发布于 2011-12-06 10:44:10
简而言之,我认为你不能(轻易)做到。请看这篇文章:
归根结底,ComboBox在内部使用了一个名为TextSearch的内置类。在此类中,超时间隔是硬编码的,不能公开访问,因此您不能更改此行为。
但是,您可以幸运地实现自己的控件,该控件继承自ComboBox并提供对受保护成员OnTextInput和OnKeyDown的覆盖。在这里,您可以实现自己的搜索逻辑和超时(可以公开为DependencyProperty,因此可以从XAML中配置)。
https://stackoverflow.com/questions/8384317
复制相似问题