c# - uwp 页面根本不触发 keydown 事件

标签 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 == VirtualKey.GamepadDPadDown
            || e.Key == VirtualKey.GamepadLeftThumbstickDown)
        {
            //VideoMenuGrid.Visibility = Visibility.Visible;
            //await VideoMenuGrid.Offset(200f, 0f, 1000, 0).StartAsync();
        }
        else if (e.Key == VirtualKey.GamepadDPadUp
            || e.Key == VirtualKey.GamepadLeftThumbstickUp)
        {
            //await VideoMenuGrid.Offset(0f, 0f, 1000, 0).StartAsync();
            //VideoMenuGrid.Visibility = Visibility.Collapsed;
        }
    }
}

最佳答案

像网格这样没有获得焦点的控件不会直接接收事件。如果它上面有另一个控件,它可能会将事件传递给网格,因为它是一个路由事件。而是使用 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 e)
  {
    //todo
  }
}

关于c# - uwp 页面根本不触发 keydown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48963052/

相关文章:

c# - mysql 创建唯一索引,索引名称中带有空格

c# - 如何删除 DateTime.Parse 对 System.Threading.Thread.CurrentThread.CurrentCulture 的依赖

c# - 为什么我不能在 XAML 中定义带有转换的几何图形?

xamarin - 我们可以使用 Xamarin.Forms for UWP 进行流畅的设计吗?

c# - 如何加快从客户端到服务器的图像传输

c# - EF Core .ThenInclude 不包含外部实体并导致查询检索不到任何内容

c# - 背景在 Mouse_Leave 中发生变化,但在 Mouse_Enter 中没有变化

vb.net - Windows 10通用应用程序VB.NET在页面之间传递数据

c# - 使用 BluetoothLEDevice.FromIdAsync 连接到蓝牙设备会导致错误

c# - x :bind UI not update when PropertyChanged in UWP