【问题标题】:Keyboard navigation in WPF grid using arrow keys使用箭头键在 WPF 网格中进行键盘导航
【发布时间】:2015-08-22 01:39:27
【问题描述】:

我有一个包含许多文本框的网格。我想使用上/下/左/右键从一个文本框移动到另一个文本框。 我尝试在网格上设置 KeyBoardNavigation.DirectionNavigation 属性,但它不起作用。但是选项卡导航工作正常。 请有任何建议。

【问题讨论】:

  • 似乎很疯狂地从文本框中删除左右箭头键功能。用户现在必须使用鼠标来定位光标?
  • 是的,他们必须为此使用鼠标。该功能将类似于excel。知道如何实现它吗??
  • 在下面查看我的答案 - 刚刚编辑。

标签: wpf grid keyboard-navigation


【解决方案1】:

正如我在评论中所说:这对想要来说是一件奇怪的事情 - 但是,我认为最简单的方法是让自己成为一个特殊的跳跃文本框,它会覆盖预览 keydown 事件以执行操作焦点变化。

public class JumpyTextBox : TextBox
{
    protected override void OnPreviewKeyDown(KeyEventArgs e)
    {
        base.OnPreviewKeyDown(e);

        if (e.Key == Key.Up || e.Key == Key.Down)
            MoveFocus(new TraversalRequest(FocusNavigationDirection.Previous));

        if (e.Key == Key.Down || e.Key == Key.Right)
            MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
    }
}

XAML 然后像普通文本框一样工作:

<local:JumpyTextBox Grid.Column="0" Text="field 1" />
<local:JumpyTextBox Grid.Column="1" Text="field 2" />

然后,您可以使用“特殊”文本框在网格中包含选项卡导航:

<Grid KeyboardNavigation.TabNavigation="Cycle">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多