wpf - autocompletebox не обновляется в mousedown - PullRequest
1 голос
/ 19 января 2011

У меня есть autocompletebox, который работает, но, как ни странно, я надеялся на помощь.При выборе элемента во всплывающем окне, используя клавиатуру со стрелкой вниз, а затем выбирая его с помощью клавиши ввода или мыши, элемент выбирается и обновляется в поле автозаполнения.Однако, если вместо того, чтобы стрелять вниз к элементу, просто навести на него курсор мыши и выбрать его с помощью мыши, выбранный элемент будет установлен правильно, но autocompletebox не будет обновляться с выбранным элементом.вниз и выберите элемент, и autocompletebox отображает выбранный элемент, тогда как наведение курсора и выбор элемента означает, что autocompletebox не отражает выбор - вместо этого он показывает, что пользователь ввел в поле;обратите внимание, что свойство backing знает о выбранном элементе, поэтому оно работает в любом случае, только оно не отражается в текстовом поле.

Любая помощь приветствуется.Спасибо

Я должен добавить, что OnSelectedItemChanged, кажется, не вызывается ...

1 Ответ

2 голосов
/ 29 ноября 2012

Эта проблема объясняется здесь: 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 Toolkit и закомментировалвызовы метода UpdateTextCompletion, как в OnAdapterSelectionComplete, так и в OnAdapterSelectionCanceled.

Поскольку я не использую завершение текста, это исправление работает нормально.

...