我使用C#和XAML爲Windows Store創建遊戲。我所有的遊戲對象都有一個畫布,描述他們的視圖。這些畫布將顯示在畫布上(gameRoot)。Windows 8中的鍵盤處理基於XAML的遊戲
我想根據他按下的按鍵移動我的播放器(例如W上升)。這是我的顯示頁面:
<Page
x:Class="Labyrinth_XAML.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Labyrinth_XAML"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Canvas x:Name="gameRoot" KeyDown="gameRoot_KeyDown_1">
<Button>Vakanu</Button>
</Canvas>
</Page>
我已經創建了我的事件處理程序斷點,KeyDown事件永遠不會觸發。谷歌後,我想通了,如果我創建一個按鈕到我的帆布事件將觸發。但如果我刪除,事件不會觸發。如果我點擊按鈕的任何地方,事件將永遠不會再次發射。
我的問題是:我如何創建一個鍵盤事件處理程序,每當我在頁面內按下某個鍵時觸發,而不取決於哪個元素具有焦點?
+1。是的,在全球範圍內捕捉關鍵事件,而不是綁定到特定的控制,更適合遊戲。但是,請注意,WPF和WinForms中的事件處理允許您一次只捕獲一個鍵或鼠標事件。 Direct X等遊戲界面允許您同時按下(並捕捉)幾個鍵盤和鼠標鍵。 –