【问题标题】:uwp page not firing keydown event at alluwp 页面根本没有触发 keydown 事件
【发布时间】:2018-02-24 12:49:28
【问题描述】:

在我的 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;
        }
    }
}

【问题讨论】:

    标签: c# xaml uwp keydown eventhandler


    【解决方案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 e)
      {
        //todo
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 2020-07-05
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      相关资源
      最近更新 更多