Как ограничить пользовательский ввод в выпадающем списке, чтобы вы могли вводить только те слова, которые находятся внутри коллекции? - PullRequest
7 голосов
/ 26 августа 2011

Для пояснения у меня есть выпадающий список с наблюдаемой коллекцией, привязанной к свойству itemsource.Я хочу, чтобы пользователь мог вводить только те элементы, которые присутствуют в коллекции.сохраняя при этом функциональность

    IsTextSearchEnabled="true"

.Поэтому я искал в Интернете пример того, как это сделать.До сих пор я решил, что должен использовать событие

    <ComboBox TextInput="cbb1_TextInput" />

, а затем искать коллекцию.Но моя слабая попытка не может поддерживать функцию автозаполнения, выбранный индекс перемешивается и другое нежелательное поведение.Так как я довольно новичок в wpf, мне интересно, есть ли решения, которые используют только часть XAML?

РЕДАКТИРОВАТЬ: Я пытался что-то вроде этого:* Но как только больше не будет совпадений, больше не будет выделенного элемента и больше не будет автозаполнения / поиска текста.

Спасибо за любые советы или примеры.

РЕШЕНИЕ: WPF ComboBox с IsEditable = "True" - Как я могу указать, что совпадений не найдено?

1 Ответ

3 голосов
/ 26 августа 2011

Если вы прокрутите до конца документацию ComboBox на MSDN, вы обнаружите, что есть один очень простой ответ: установите для ComboBox.IsEditable значение false. Пользователь по-прежнему может выбирать элементы в редакторе, вводя префикс в поле, но он сможет вводить только те значения, которые уже есть в списке.

Недостатком является то, что вы не получаете нормального поведения типа «TextBox», в частности, вы не можете копировать / вставлять выбранный элемент из поля со списком. Если это также является проблемой для вас, сообщите нам, но в любом случае это типичное поведение для ComboBox в стиле DropDownList в Windows.

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