2016-03-01 122 views
0

与我的智能手机我连接蓝牙HID设备发送数据作为键盘输入(这是一个RFID阅读器)。现在我编写了一个UWP应用程序来使用此输入。但问题是,如果不专注于像文本框这样的控件,我无法获得键盘输入事件。UWP订阅键盘输入事件/获取隐藏键盘输入

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

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

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

感谢先进!

回答

0

我也正在寻找一种更好的方式,这是不是一个完整的答案,因为我还是要点击之前键盘将重点在页面内的某个地方,但它是一个开始:

<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); 
+0

不错的想法,但它舔在用户使用导航点。所以焦点从pageGrid中丢失,KeyDown事件不再被触发。我仍然尝试你的榜样。 – Surras

-1

试试这个:

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

它为我工作。