2011-01-19 58 views
1

我有一个autocompletebox可以工作,但对于我希望获得帮助的一个奇怪之处。在弹出窗口中选择一个项目时,使用键盘向下箭头,然后使用回车键或鼠标选择它,该项目将被选中并更新到自动完成框中。但是,如果不是向下箭头移动到该项目而只是将鼠标悬停在该项目上并用鼠标选中它,则selecteditem会正确设置,但autocompletebox不会使用所选项目更新。wpf - autocompletebox不会在mousedown上更新

也就是说,向下箭头并选择一个项目,自动完成框反映所选项目,而只是悬停并选择项目意味着自动完成框不会反映选择 - 而是显示用户输入框中的内容;请注意,支持属性知道所选项目,因此它可以以任何方式工作,只有它不会反映在文本框中。

任何帮助表示赞赏。 感谢

我要补充,这是OnSelectedItemChanged似乎并没有得到所谓...

+0

您是自己实现了自动完成框还是引用了Codeplex上WPF Toolkit中的自动完成框? (或者也许是另一个?我们不能回答你的问题,如果我们不知道。 – 2011-01-19 07:25:45

回答

2

这个问题说明如下:http://www.siimviikman.com/2012/05/30/wpf-autocompleteboxfiltering-similar-items/

正如在文章的最后一种高精度,用户无法导航项目(使用箭头键+按TAB键)。这就是为什么我不能使用他们的解决方案。

在WPF工具包的源代码(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 Toolkit和注释,以UpdateTextCompletion方法的调用,无论是在OnAdapterSelectionComplete和OnAdapterSelectionCanceled。

因为我没有使用文本完成,所以此修复似乎工作正常。