Комбинированный фильтр текста теряется при вводе последних вводов с некоторой задержкой - PullRequest
3 голосов
/ 05 декабря 2011

Мне нужен этот WPF ComboBox как раскрывающийся список, в котором пользователь не может вводить текст, такой как текстовое поле, но все еще может выполнять поиск с помощью ввода текста.

Я установил IsEditable = false и IsTextSearchEnabled = true, и это работает.

Но проблема в том, что, скажем, пользователь ищет текст «Япония».Пользователь начинает ввод текста в комбо с "J".Некоторые элементы, начинающиеся с буквы «J», отображаются в отфильтрованном списке раскрывающейся панели.Теперь, если пользователь ждет 3-4 секунды, а затем набирает «a» (чтобы завершить ввод «Japan»), отфильтрованный список будет скорее перемещаться к элементам, начинающимся с «a».

Он должен искать «Ja», но ищет «a» и отбрасывает «J».

Есть идеи, как мне исправить это поведение?

1 Ответ

2 голосов
/ 06 декабря 2011

Короче говоря, я не думаю, что вы можете (легко). Смотрите этот пост:

WPF combobox поиск предмета

Что сводится к тому, что внутренне ComboBox использует встроенный класс, называемый TextSearch. В этом классе интервал тайм-аута жестко запрограммирован и не является общедоступным, поэтому вы не можете изменить это поведение.

Однако вам может повезти, реализовав свой собственный элемент управления, наследуемый от ComboBox и обеспечивающий переопределение защищенных членов OnTextInput и OnKeyDown. Здесь вы можете реализовать свою собственную логику поиска и собственный тайм-аут (который может быть представлен как DependencyProperty и, следовательно, настраивается из XAML).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...