2

我正在尝试使用 c# 和 xaml 制作一个简单的 Windows 8 Metro 游戏。我一直无法触发 KeyDown 事件。我认为这可能是因为网格没有焦点。如果是这种情况,我将如何在我的代码中赋予网格焦点?感谢您的帮助。

这是我的代码:xaml 中的网格

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" 
      KeyDown="Grid_KeyDown" KeyUp="Grid_KeyUp" x:Name="myGrid"
      >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
    <StackPanel Orientation="Vertical">
        <StackPanel Orientation="Horizontal">
            <TextBlock FontSize="30" Margin="10" x:Name="statusBox">Status</TextBlock>
        </StackPanel>
    </StackPanel>

和 c# 中的事件处理程序

    private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        statusBox.Text = "Key down";
    }
4

1 回答 1

11

在CoreWindow级别而不是网格级别挂钩事件。在您的 C# 中,执行类似...

CoreWindow.GetForCurrentThread().KeyDown += Window_KeyDown;

其中 Window_Keydown 是一种代替您当前拥有 Grid_KeyDown 的方法。

于 2012-08-04T22:26:00.173 回答