2015-10-20 65 views
2

我正在与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按钮外,其他所有按钮都被识别。 背景图表正在发生变化,图表是否具有焦点并且不会“转发”输入?

回答

0

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

您可以尝试使用PreviewKeyDown -Event作为这种情况。

如果我在最小的解决方案中使用您提供的代码,我会收到所有密钥的KeyDown事件,但要求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); 
    } 
} 
+0

PreviewKeyDown做了诡计。并改变了重点。谢谢 – Dragon