Как отображать данные на основе пользовательского ввода в поле со списком wpf

#c# #wpf #combobox

#c# #wpf #поле со списком

Вопрос:

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

если пользователь изменяет входные данные, они не очищаются в других полях.

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

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

Ответ №1:

Из вашего вопроса я понимаю, что вы можете использовать событие lostfocus для свойства Text, а не SelectedItem

  <ComboBox KeyUp="cmbDevice_KeyUp" IsEditable="True" x:Name="cmbDevice" TextSearchEnabled="True" Text="{Binding SelectedDevice,UpdateSourceTrigger=LostFocus}" ItemsSource="{Binding DeviceList }">
                        <ComboBox.ItemsPanel>
                            <ItemsPanelTemplate>
                                <VirtualizingStackPanel />
                            </ItemsPanelTemplate>
                        </ComboBox.ItemsPanel>
                    </ComboBox>
 private void cmbDevice_KeyUp(object sender, KeyEventArgs e)
        {
            cmbDevice.IsDropDownOpen = true;
        }
  

Ответ №2:

Внеся следующие изменения в xaml, он работает нормально

Поиск текста.Text=»{Привязка пользовательского текста}» Text=»{Привязка ticketText}» IsEnabled=»{Привязка IsTicketEnable}» ItemsSource=»{Привязка LstTicket}» DisplayMemberPath=»билет» ValuePath=»билет» SelectedItem=»{Привязка выбранного билета}» TextChanged=»cmbTicket_TextChanged»SelectedItemChanged=» cmbTicket_SelectedItemChanged»