Tal*_*me2 1 c# wpf key-bindings uwp
在我的 WPF 应用程序中,我使用下面编写的内容将 F10 键的按键绑定到运行脚本中名为“btn_font_click”的方法。然而,显然 UWP 不支持 XAML 中的直接键绑定,因为它是通用的并且不是为 Windows 设计的。
有什么方法可以在 UWP 应用程序中获得相同的效果吗?
<Window.Resources>
<RoutedUICommand x:Key="cmd1"></RoutedUICommand>
</Window.Resources>
<Window.CommandBindings>
<CommandBinding Command="{StaticResource cmd1}"
Executed="btn_font_Click">
</CommandBinding>
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="F10" Command="{StaticResource cmd1}"></KeyBinding>
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)
我正在使用 RFID 读取器输入数据。目前,当扫描 RFID 卡时,会按 F10,键入其数据,然后按 Enter。我的想法是 F10 将键盘焦点设置到文本框,然后脚本等待输入按键,同时 RFID 键入其数据,然后获取文本框中的内容并将其拆分为数组以在应用程序中使用。
如果有更好或更直接的方法将数据从 RFID 卡内获取到我的阵列,我愿意接受其他潜在的解决方案。
编辑:经过一段时间的研究,我发现“键盘加速器”最适合该程序的当前功能,因为我希望 RFID 卡在应用程序不处于焦点时仍然可以工作。我可以获得一些关于如何设置键盘加速器将 F10 按键链接到运行我的方法的指示吗?
如果您想设置这种应用程序范围的键盘快捷键机制,激活器绝对是一种方法。
有一个关于可用键盘加速器的文档,并且自秋季创作者更新以来此功能可用。每个UIElement都有一个KeyboardAccelerators集合,它允许您定义与其交互的键盘加速器。如果按钮和菜单项调用指定的快捷方式,则会自动调用控件,但为了使您TextBox集中注意力,您必须使用Invoked事件自己指定此行为:
<TextBox>
<TextBox.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="None"
Key="F10" Invoked="KeyboardAccelerator_OnInvoked" />
</TextBox.KeyboardAccelerators>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
然后在事件处理程序中TextBox重点关注:
private void KeyboardAccelerator_OnInvoked(
KeyboardAccelerator sender,
KeyboardAcceleratorInvokedEventArgs args )
{
(args.Element as Control).Focus(FocusState.Keyboard);
}
Run Code Online (Sandbox Code Playgroud)
该KeyboardAcceleratorInvokedEventArgs.Element属性包含对 our 的引用TextBox,我将其转换为,因为这是声明该方法Control的父级,并且您可以在任何可聚焦控件上重用此方法。TextBoxFocus
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |