2012-04-03 63 views
1
private void Page_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.Key == Key.Right) 
      { 
       if (shipPosition < right) 
       { 
        x = x + 10; 
        shipPosition = shipPosition + 10; 
        ship.Margin = new Thickness(shipPosition, y, 0, 0); 
       } 
      } 
     } 

    XAML - KeyDown="Page_KeyDown" 

我有一艘船名爲長方形,以上的功能是將其移動,要在右或左箭頭鍵按下按鈕執行。出於某種原因,這是行不通的。 「KeyDown =」Page_KeyDown「」是將按鈕與事件關聯的xaml。還有另一個包含按鈕的網格,每當計時器滴答時移動按鈕,當我點擊一個按鈕並突出顯示它時,然後按箭頭鍵,船開始移動,突出顯示的按鈕也會改變。有誰知道發生了什麼事?奇對象交互,可聚焦特性做一些奇怪的

更新:我刪除了按鈕上的focusable屬性,然後停止了所有的船舶運動。所以我認爲這與改變對按鈕的焦點有關。

回答

2

試試這個:

Keyboard.AddKeyDownHandler(this, Page_KeyDown); 

把它放在你的控制適當的方法(構造函數初始化,...)

public MainWindow() 
{ 
    InitializeComponent(); 
    Keyboard.AddKeyDownHandler(this, Page_KeyDown); 
} 
+0

似乎並沒有太大變化,但它會解決放下關鍵聲明的問題。我刪除了所有按鈕的可聚焦屬性,這就完全阻止了船的移動。必須與改變按鈕上的焦點有關... – GrumpyMammoth 2012-04-03 11:29:13