Выпадающий список со списком автоматически

#c# #wpf #mvvm #combobox

#c# #wpf #mvvm #список со списком

Вопрос:

У меня есть редактируемый список со списком, MVVM. Мне нужен выпадающий список = true, когда я что-то пишу в выпадающем списке.

  Text="{Binding textsearch, UpdateSourceTrigger=PropertyChanged}" 
  

здесь в textsearch я написал OnPropertyChange для ComboBox IsDropDownOpen=true, но это работает только один раз, когда я выбираю строку, затем пытаюсь написать снова, выпадающий список = false и не реагирует на свойство…

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

Как заставить фильтр работать?

Или, как в другом варианте, я добавил текстовое поле для фильтрации текста, но когда я пишу текст и вызываю свойство textsearch, текстовое поле теряет фокус, а поле со списком имеет этот фокус… как сохранить фокус на текстовом поле и выпадающем списке элементов списка со списком?

Ответ №1:

Самый простой способ сделать что-то подобное — обработать одно или несколько событий. Вы могли бы попытаться обработать PreviewTextInput событие:

 <ComboBox ItemsSource="{Binding Items}" IsEditable="True" 
    PreviewTextInput="ComboBox_PreviewTextInput" />
  

 private void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    ComboBox comboBox = sender as ComboBox;
    comboBox.IsDropDownOpen = true;
}
  

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