uwp页面根本没有触发keydown事件

时间:2018-02-24 12:49:29

标签: c# xaml uwp keydown eventhandler

在我的uwp应用程序中,我刚刚添加了一个新页面并导航到它,我在该页面上只有默认网格。但是我正在尝试接收任何根本没有按任何键启动的keydown事件。我也把keydown放在xaml上的网格和后面的代码页面中,但它仍然没有启动我已经确定了断点。

XAML

<Grid KeyDown="VideoPageKeyDown">

</Grid>

代码

public sealed partial class VideoPlay : Page
{
    public VideoPlay()
    {
        this.InitializeComponent();
        KeyDown += VideoPageKeyDown;
    }

    private void VideoPageKeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == Windows.System.VirtualKey.GamepadDPadDown || e.Key == Windows.System.VirtualKey.GamepadLeftThumbstickDown)
        {
            //VideoMenuGrid.Visibility = Visibility.Visible;
            //await VideoMenuGrid.Offset(200f, 0f, 1000, 0).StartAsync();
        }
        else if (e.Key == Windows.System.VirtualKey.GamepadDPadUp || e.Key == Windows.System.VirtualKey.GamepadLeftThumbstickUp)
        {
            //await VideoMenuGrid.Offset(0f, 0f, 1000, 0).StartAsync();
            //VideoMenuGrid.Visibility = Visibility.Collapsed;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

像网格一样无法获得焦点的控件将不会直接接收事件。如果其上有另一个控件,它可能会将事件传递给网格,因为它是一个路由事件。你使用coreWindow keyDown事件。

public sealed partial class VideoPlay : Page
{
    public VideoPlay()
    {
       this.InitializeComponent();
       //Add this line
       Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;    
    }

     void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
    {
        //todo
    }