Wpf Combobox Limit to List - PullRequest
       12

Wpf Combobox Limit to List

4 голосов
/ 09 ноября 2009

Мы используем Wpf Combobox, чтобы позволить пользователю делать следующие вещи: 1) выберите элементы, введя первые несколько символов 2) автоматическое заполнение записи путем фильтрации списка 3) предложение первого элемента, совпадающего с буквами, набранными в качестве выбранного элемента

Задача - обработать сценарий, когда пользователь вводит символы, которых НЕ в списке. Это должно означать, что пользователь либо совершил ошибку, либо хочет ввести новый элемент.
Combobox привязан к пользовательским типам, и у них есть правила проверки, связанные со свойством, которое заполняется выбором. Мы не можем понять, как определить, когда пользователь ввел запись NOT IN THE LIST, и присвоить привязанному свойству недопустимое значение, которое вызовет проверку.

Когда пользователь вводит строку символов, которые не представляют элемент в списке, выбранный элемент становится пустым. Поскольку selecteditem имеет значение NULL, путь свойства, связанный с объектом datacontext формы, не может быть идентифицирован WPF, и поэтому привязка не выполняется. Бизнес-объект затем сохраняет любое предыдущее значение и не получает новое значение.

1 Ответ

4 голосов
/ 27 января 2010

Теперь, когда я потратил добрые полчаса на исследование аналогичной проблемы, ответ довольно прост: оцените как свойства SelectedItem, так и Text ComboBox. Выбранный элемент будет null, если пользователь не выбрал значение из списка; в этом случае текст будет содержать ввод пользователя. В зависимости от ваших потребностей вы можете использовать привязку к одному или обоим свойствам или оценить их в приведенном ниже коде.

...