2015-10-20 98 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