次のビジュアル ツリーがあります。
<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