ヘウレカ!
私は同じ問題を抱えていましたが、Windows 8.1. 解決策を見つけるのに2日かかりました。これは愚かな SwapChainPanel であり、このクラスは Control クラスから継承されないため、フォーカスを合わせることができず、キーボード イベントを処理しません。
解決策はHEREです。つまり、イベントを処理する Button のように、Control クラスから継承された XAML 要素を配置する必要があります。私のXAMLファイルは次のようなものです:
<SwapChainPanel x:Name="_swapChainPanel"
Loaded="_swapChainPanel_Loaded"
KeyDown="_swapChainPanel_KeyDown">
<Button x:Name="_swapChainButton"
Content="Button"
HorizontalAlignment="Left"
Height="0"
VerticalAlignment="Top"
Width="0"
KeyDown="_swapChainButton_KeyDown">
</Button>
</SwapChainPanel>
XAML.cs では、次のようにイベントを処理しました。
private void _swapChainButton_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
{
e.Handled = false; //This will pass the event to its parent, which is the _swapChainPanel
}
private void _swapChainPanel_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
{
game.KeyboardEvent();
}
KeyboardEvent() メソッドに if を入れました... コードを使用して、ボタンを手動でフォーカスする必要があります。"_swapChainButton.Focus(FocusState.Programmatic);"
しかし最後に、それは私にはあまり良くありません。とても遅いです。遅延があります。:/