繁体   English   中英

在UWP中,WPF是否可以替代“键绑定”?

[英]Is there an alternative to WPF's “KeyBinding” in 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>

我用于从RFID阅读器输入数据。 当前,在扫描RFID卡时,按F10键,输入其数据,然后按Enter键。 我的想法是F10将键盘焦点设置到文本框,然后脚本等待回车,同时RFID键入数据,然后获取文本框中的内容并将其拆分为数组以供应用程序使用。

如果有更好或更直接的方法将数据从RFID卡中获取到我的阵列,那么我将寻求其他潜在的解决方案。

编辑:研究了一段时间后,我发现“键盘加速器”最适合于此程序的当前功能,因为我希望在应用程序未聚焦时RFID卡仍能正常工作。 关于如何设置将F10按键链接到我的方法的键盘加速器,我可以得到一些建议吗?

如果您想设置这种应用程序范围的键盘快捷方式机制,那么激活器绝对是实现此目的的一种方法。

提供了有关键盘加速器文档,并且自Fall Creators Update起提供了此功能。 每个UIElement都有一个KeyboardAccelerators集合 ,该集合允许您定义与其交互的键盘加速器。 如果按钮和菜单项调用了指定的快捷方式,则会自动调用该控件,但是要使TextBox焦点,您必须使用Invoked事件自行指定此行为:

<TextBox>
    <TextBox.KeyboardAccelerators>                
            <KeyboardAccelerator Modifiers="None"                       
                Key="F10" Invoked="KeyboardAccelerator_OnInvoked" />
    </TextBox.KeyboardAccelerators>
</TextBox>

然后在事件处理程序中,将TextBox重点放在:

private void KeyboardAccelerator_OnInvoked(
      KeyboardAccelerator sender, 
      KeyboardAcceleratorInvokedEventArgs args )
{
    (args.Element as Control).Focus(FocusState.Keyboard);
}

KeyboardAcceleratorInvokedEventArgs.Element属性包含对我们TextBox的引用,我将其转换为Control ,因为这是声明Focus方法的TextBox的父级,并且您可以在任何可聚焦控件上重用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM