禁用 UWP 应用与 Tab 键的交互

Posted

技术标签:

【中文标题】禁用 UWP 应用与 Tab 键的交互【英文标题】:Disable interaction of UWP app with the Tab Key 【发布时间】:2019-07-10 07:23:45 【问题描述】:

我正在构建一个 UWP 应用。我希望我的应用程序根本不响应 Tab 键。我的意思是每当用户按下 Tab 键时,我的应用程序都应该完全忽略。

【问题讨论】:

【参考方案1】:

您可以在页面的PreviewKeyDown 事件中处理 Tab 键:

public MainPage()

    this.InitializeComponent();
    this.PreviewKeyDown += MainPage_PreviewKeyDown;


private void MainPage_PreviewKeyDown(object sender, KeyRoutedEventArgs e)

    if (e.Key == VirtualKey.Tab)
    
        e.Handled = true;
    

但是,我建议不要这样做,因为这会删除您应用的可访问性的一个重要部分 - 许多用户喜欢或需要使用键盘进行导航。

应用范围的解决方案

如果您想在应用程序范围内处理 Tab 键,您可以通过两种方式进行:

创建自定义基页类型

您可以创建一个类似PageBase 的新类,该类将派生自Page,并将在其构造函数中设置PreviewKeyDown 事件处理。然后,您将在应用中拥有的所有其他页面都可以从 PageBase 派生。

在根 Frame 上处理 Tab

您可以在App.xaml.cs 中将PreviewKeyDown 处理程序添加到应用程序的根Frame 控件:

rootFrame = new Frame();
rootFrame.PreviewKeyDown += RootFrame_PreviewKeyDown;

【讨论】:

这可以在应用层面实现吗? 如何禁用(临时)键,例如:win 键、ctr+alt+delete、alt+F4? 我不确定这实际上是否可行,因为这些是系统范围的快捷方式,很遗憾

以上是关于禁用 UWP 应用与 Tab 键的交互的主要内容,如果未能解决你的问题,请参考以下文章

[在运行单元测试(UWP)时启动应用程序

UWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为

全局禁用 cmd+tab 应用切换器

如何禁用 Xbox One 的指针模式(C#、UWP)

处理 UWP 应用程序上的“Enter”键

在 UWP 应用中切换音频