【问题标题】:wpf - autocompletebox doesn't update on mousedownwpf - 自动完成框不会在鼠标按下时更新
【发布时间】:2011-01-19 06:58:33
【问题描述】:

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

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

感谢任何帮助。 谢谢

我应该补充一点,似乎没有被调用的是 OnSelectedItemChanged...

【问题讨论】:

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

标签: wpf autocomplete focus wpftoolkit


【解决方案1】:

这里解释了这个问题: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 方法的调用。

由于我不使用文本完成功能,因此此修复似乎可以正常工作。

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多