4

我有一个下面有一个 ListView 的 TextBox,当 TextBox 获得焦点时,我想将向上和向下箭头键重定向到 ListView。在我做任何特别的事情之前,有人知道在控件之间重定向键的方法吗?

4

1 回答 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 回答