Я создаю игру для Магазина Windows, используя C# и XAML. Все мои игровые объекты имеют холст, описывающий их вид. Эти холсты будут отображаться в холсте (gameRoot).
Я хочу переместить своего игрока в зависимости от того, какую клавишу он нажал (например, 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 никогда не срабатывает. После некоторого поиска в Google я понял, что если я создам кнопку в своем Canvas, событие сработает. Но если я удалю, событие не сработает. Если я нажму в любом месте кнопки, событие больше никогда не сработает.
Мой вопрос: как я могу создать обработчик событий клавиатуры, который срабатывает каждый раз, когда я нажимаю клавишу на странице, независимо от того, какой элемент имеет фокус?