У меня есть следующее визуальное дерево:
<DockPanel>
<TextBox Name="ElementWithFocus" DockPanel.Dock="Left" />
<ListBox DockPanel.Dock="Left" Width="200" KeyUp="handleListBoxKeyUp">
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>4</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
</ListBox>
<TextBox DockPanel.Dock="Left" />
</DockPanel>
handleListBoxKeyUp
это следующее:
private void handleListBoxKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
((UIElement)sender).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
Когда ListBox
имеет фокус клавиатуры (на самом деле, я думаю, ListBoxItem
), нажатие Enter
перемещает фокус на первый элемент в ListBox
, а не на следующий TextBox
. Почему это происходит и как заставить клавишу Enter
действовать как Tab
здесь?