Ведение текста в выпадающем списке после выбора связанного элемента в WPF / C# - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть ComboBox WPF, который я использую для поиска имен. Я использую шаблон MVVM, и все это довольно просто:

Свойство ComboBox Text связано со свойством «SearchString» на виртуальной машине. Элемент ComboBox ItemsSource связан со свойством «SearchResult» на виртуальной машине. Это список объектов, отображаемых с использованием DataTemplate. ComboBox также запускает событие «PreviewKeyDown», и нажатие клавиши ввода выбирает первый элемент в наборе результатов, а клавиши со стрелками вверх и вниз пересекают результаты. SelectedItem привязан к DataContext для GroupBox. Эта часть работает очень хорошо.

Когда элемент выбран в ComboBox, WPF автоматически пытается заменить «Текст» моим SelectedItem. Это приводит к тому, что мой набор результатов очищается, а «Текст» возвращается в пустую строку.

Поведение, которое мне нравится , заключается в том, что при выборе элемента текст в ComboBox остается точно таким же, так что мой пользователь может продолжать просматривать набор результатов, используя стрелки вверх и вниз.

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

1 Ответ

0 голосов
/ 20 апреля 2020

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

Это требование не встроено в элемент управления ComboBox. Если вы хотите что-то подобное, вам придется создать его самостоятельно (и, скорее всего, подклассы не помогут, для этого вам придется собрать большую часть ComboBox).

На самом деле вы не должны привязывать текущий элемент подобным образом, вы должны использовать свойство SelectedItem, которое не выполняет никаких преобразований или копий, именно то, что вы хотите для внутренней привязки.

...