Еще раз я не могу найти аккуратное решение для простой проблемы пользовательского интерфейса в WPF. Я хочу, чтобы раскрывающийся список поля со списком появлялся всякий раз, когда поле со списком фокусировалось. Итак, я написал это в событии получил фокус:
private void comboBoxAC_Cat_GotFocus(object sender, RoutedEventArgs e)
{
comboBoxAC_Cat.IsDropDownOpen = true;
}
Но теперь проблема в том, что как только раскрывающийся список открывается, приложение как бы застревает в нем. Он не может выйти из выпадающего списка независимо от того, что я делаю, нажимаю ли я клавишу ввода или что-то еще. Я пытался зарегистрироваться, чтобы потерять фокус или другие события, но ничего не помогло. Вот список моих обработчиков событий в приложении, которые становятся бесполезными, когда я попадаю в выпадающий список.
private void Grid_PreviewKeyDown(object sender, KeyEventArgs e)
{
var uie = e.OriginalSource as UIElement;
if (e.Source is Button)
return;
if (e.Key == Key.Enter)
{
e.Handled = true;
uie.MoveFocus(
new TraversalRequrest(
FocusNavigationDiection.Next));
}
}
private void comboBoxAC_Cat_LostFocus(object sender, RoutedEventArgs e)
{
(sender as ComboBox).IsDropDownOpen = false;
}
Может кто-нибудь помочь мне с этим, пожалуйста?
Моё основное требование простое: раскрывающийся список должен открываться, как только Combobox фокусируется с помощью вкладки или мыши. Затем пользователь должен иметь возможность выбирать элементы, и, как только он нажимает клавишу ввода, выбирая элемент из выпадающего списка, он должен закрыться, и фокус должен перейти к следующему элементу пользовательского интерфейса.
Теперь это трудно достичь ??? Я думал, что это именно функциональность комбобокса