2

c# と xaml を使用して、単純な Windows 8 メトロ ゲームを作成しようとしています。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 に答える