wpf-自动完成盒不';t mousedown更新

wpf-自动完成盒不';t mousedown更新,wpf,autocomplete,focus,wpftoolkit,Wpf,Autocomplete,Focus,Wpftoolkit,我有一个自动完成的盒子,但有一个奇怪的地方我希望能得到帮助。在弹出窗口中选择项目时,使用键盘向下箭头,然后使用enter键或鼠标选择该项目,该项目将被选中并更新到自动完成框中。但是,如果一个项目不是向下箭头指向该项目,而是将鼠标悬停在该项目上并用鼠标选择它,则selecteditem设置正确,但autocompletebox不会使用selecteditem进行更新 也就是说,向下箭头并选择一个项目,自动完成框反映所选项目,而仅将鼠标悬停并选择该项目意味着自动完成框不反映所选内容,而是显示用户在框

我有一个自动完成的盒子,但有一个奇怪的地方我希望能得到帮助。在弹出窗口中选择项目时,使用键盘向下箭头,然后使用enter键或鼠标选择该项目,该项目将被选中并更新到自动完成框中。但是,如果一个项目不是向下箭头指向该项目,而是将鼠标悬停在该项目上并用鼠标选择它,则selecteditem设置正确,但autocompletebox不会使用selecteditem进行更新

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

感谢您的帮助。 谢谢


我要补充的是,OnSelectedItemChanged似乎没有被称为…

这里解释了这个问题:

正如本文结尾所说,用户无法浏览项目(使用箭头键+点击标签)。这就是为什么我不能使用他们的解决方案

在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工具包并注释掉了对UpdateTextCompletion方法的调用,包括OnAdapterSelectionComplete和OnAdapterSelectionCancelled


由于我不使用文本完成,此修复程序似乎工作正常。

是您自己实现的自动完成框,还是指Codeplex上WPF工具包中的自动完成框?(或者另一个?如果我们不知道,我们无法回答您的问题。抱歉,这是Codeplex外的WPF工具包