【问题标题】:UWP subscribe keyboard input event / get hidden keyboard inputUWP 订阅键盘输入事件/获取隐藏的键盘输入
【发布时间】:2016-03-01 13:39:38
【问题描述】:

我用我的智能手机连接了一个蓝牙 HID 设备,它将数据作为键盘输入发送(它是一个 RFID 阅读器)。现在我编写了一个 UWP 应用来使用这个输入。但问题是,如果不关注文本框等控件,我无法获取键盘输入事件。

在我的应用程序中,我有一个带有 splitView(菜单和内容)的 rootFrame,在 Content-View 中,我有一个新框架,用于加载页面。

我尝试了Pages的KeyDown-Event,但它不能正常工作,因为焦点并不总是在页面上(如果用户触摸导航面板,焦点会切换到mainFrame) .

那么,是否可以将 eventHandler 添加到键盘输入中?还是有其他做法可以解决这个问题?

提前致谢!

【问题讨论】:

    标签: input bluetooth keyboard win-universal-app


    【解决方案1】:

    我也在寻找更好的方法,这不是一个完整的答案,因为我仍然需要在键盘获得焦点之前单击页面内的某个位置,但这是一个开始:

    <Grid x:Name="PageGrid"
          KeyDown="{x:Bind ViewModel.OnKeyboardNumberInput, Mode=OneWay}"
    

    然后在我的 ViewMode 的 PageLoaded 事件中:

        public void PageLoaded(object sender, RoutedEventArgs args)
        {
            var grid = sender as Grid;
    
            // Find the OutputValueTextBlock and set keyboard focus to it.
            var tb = (TextBlock)grid.FindName("OutputValueTextBlock");
            tb.Focus(FocusState.Keyboard);
    

    【讨论】:

    • 不错的主意,但它在用户使用导航的时候有所欠缺。因此焦点从 pageGrid 中丢失,并且不再触发 KeyDown-Event。我仍然尝试了您的示例。
    【解决方案2】:

    试试这个:

    Windows.UI.Xaml.Window.Current.CoreWindow.CharacterReceived += KeyPress;
    

    它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-07
      • 2014-11-06
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多