我有一个自动完成框可以工作,但有一个奇怪的我希望得到帮助。在弹出窗口中选择项目时,使用键盘向下箭头,然后使用回车键或鼠标选择它,该项目将被选中并更新到自动完成框中。但是,如果一个而不是向下箭头只是将其悬停在它上面并用鼠标选择它,则选择的项目设置正确,但自动完成框不会使用选定项目进行更新。
也就是说,向下箭头并选择一个项目,自动完成框反映所选项目,而只是将鼠标悬停在选择项目上意味着自动完成框不会反映选择 - 而是显示用户在框中键入的内容;请注意,支持属性知道所选项目,因此它可以以任何方式工作,只是它没有反映在文本框中。
感谢任何帮助。 感谢
我应该补充说,OnSelectedItemChanged似乎没有被调用...
答案 0 :(得分:2)
此问题在此解释:http://www.siimviikman.com/2012/05/30/wpf-autocompleteboxfiltering-similar-items/
如文章末尾所述,用户无法浏览项目(使用箭头键+点击TAB)。这就是为什么我无法使用他们的解决方案。
在WPF Toolkit源代码(UpdateTextCompletion方法)中,可以阅读:
// Perform an exact string lookup for the text. This is a
// design change from the original Toolkit release when the
// IsTextCompletionEnabled property behaved just like the
// WPF ComboBox's IsTextSearchEnabled property.
//
// This change provides the behavior that most people expect
// to find: a lookup for the value is always performed.
newSelectedItem = TryGetMatch(text, _view, AutoCompleteSearch.GetFilter(AutoCompleteFilterMode.EqualsCaseSensitive));
所以我简单地修改了WPF工具包,并在OnAdapterSelectionComplete和OnAdapterSelectionCanceled中注释掉了对UpdateTextCompletion方法的调用。
由于我没有使用文本完成,这个修复似乎工作正常。