我有一个下面有一个 ListView 的 TextBox,当 TextBox 获得焦点时,我想将向上和向下箭头键重定向到 ListView。在我做任何特别的事情之前,有人知道在控件之间重定向键的方法吗?
问问题
1533 次
1 回答
0
理想情况下,您可以设置 KeyboardNavigation.DirectionalNavigation (http://msdn.microsoft.com/en-us/library/system.windows.input.keyboardnavigation.directionalnavigation.aspx),但我认为由于文本框处理方向键的方式,这将被忽略。
作为替代方案,您可以处理 PreviewKeyDown 以使向上和向下箭头模拟选项卡。
<StackPanel PreviewKeyDown="StackPanel_PreviewKeyDown" >
<TextBox Text="Test" TabIndex="0" />
<ListView TabIndex="1">
<ListViewItem>One</ListViewItem>
<ListViewItem>Two</ListViewItem>
<ListViewItem>Three</ListViewItem>
</ListView>
</StackPanel>
private void StackPanel_PreviewKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Up:
((UIElement)Keyboard.FocusedElement).MoveFocus(new TraversalRequest(FocusNavigationDirection.Previous));
e.Handled = true;
break;
case Key.Down:
((UIElement)Keyboard.FocusedElement).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
e.Handled = true;
break;
}
}
于 2013-04-11T00:56:08.390 回答