#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»