按键事件不会通过箭头键激活

时间:2015-10-20 06:09:46

标签: c# wpf xaml keyboard-events arrow-keys

我首先与WPF合作并且我是新手。

我在一个xaml中的内容控件中添加了一个KeyDownEvent:

 <ContentControl Grid.Row="1" Name="dockingContentControl" KeyDown="dockingContentControl_KeyDown"/>

我知道,可能有更好的方法来添加KeyDown事件。 (也会有所帮助)

但事件正在发挥作用。所以我使用了一个简单的Console.WriteLine命令:

private void dockingContentControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    Console.WriteLine(e.Key);
}

它向我展示了我按下的按钮。

但不知怎的,它并没有触发Arrowkeys。

我不知道为什么所有其他(我认为所有,没有测试所有)按钮正在工作,但箭头键没有。

我是否遗漏了某些内容,或者我是否需要添加某些额外的代码。

推荐:fn - 按钮外,所有其他按钮均已识别。 背景图表正在移动,可能是图表具有焦点并且没有&#34;前进&#34;输入?

1 个答案:

答案 0 :(得分:0)

这取决于您在ContentControl中放置的控件以及具有焦点的控件。某些控件通常会忽略某些键(如TAB,RETURN,ESC和箭头键),因为它们不被视为输入键按下。箭头键被认为是导航键,按下这些键通常不会引发KeyDown(以Button为例)

对于这种情况,您可以尝试使用PreviewKeyDown - 事件。​​

如果我在最小的解决方案中使用您提供的代码,我会收到所有密钥的KeyDown-Events,但要求ContentControl具有焦点。

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        dockingContentControl.Focus();
    }

    private void dockingContentControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        Console.WriteLine(e.Key);
    }
}