Не устанавливайте фокус на ListBox ... установите фокус на выбранный ListBoxItem. Это решит проблему «требуется два нажатия клавиш»:
if (lbActions.SelectedItem != null)
((ListBoxItem)lbActions.SelectedItem).Focus();
else
lbActions.Focus();
Если ваш ListBox содержит что-то кроме ListBoxItem
s, вы можете использовать lbActions.ItemContainerGenerator.ContainerFromIndex(lbActions.SelectedIndex)
, чтобы получить автоматически сгенерированный ListBoxItem
.
Если вы хотите, чтобы это произошло во время инициализации окна , вам нужно поместить код в событие Loaded
, а не в конструктор. Пример (XAML):
<Window ... Loaded="Window_Loaded">
...
</Window>
Код (на примере вашего вопроса):
private void Window_Loaded(object sender, RoutedEventArgs e)
{
lbActions.Focus();
lbActions.SelectedIndex = 0;
((ListBoxItem)lbActions.SelectedItem).Focus();
}