uwp - 在没有控件的情况下处理 UWP 应用中的键盘事件
问题描述
我正在开发一个 UWP 应用程序,它实际上没有任何预建键盘处理附带的控件——它是一个Grid
s 的大树,其中包括 an InkCanvas
、 a Win2D
、 regular Canvas
、 anImage
等。
我已经在我的 上声明KeyDown
和PreviewKeyDown
处理程序Page
,但是当我在基本设置中按下按钮时它们不会被调用。
我发现我可以Focus(FocusState.Programmatic);
从我的页面调用,然后我收到关键事件,但直到我将焦点放在(单击)InkCanvas
例如。
然后我在文档中找到了针对特定控件元素的指针操作和事件的键盘替代部分。它建议设置IsTabStop
我自己的自定义控件,或者将所有内容包装在<Button>
.
后者有点工作,我可以将我的根包裹Grid
在 a 中Button
,然后KeyDown
每次都触发,无论我最后关注哪个元素。
这只是感觉完全错误,它还创造了一些视觉“伪影”。(它在所有东西周围画了一个按钮......)
IsTabStop
也可以,但是我需要开始将所有内容包装在自定义控件中(例如Image
)。它似乎没有“继承”树。
有没有围绕这个的最佳实践?在我的应用程序中处理任何按键都不应该那么难,不是吗?
解决方案
推荐阅读
- string - Powershell 部分匹配字符串密码复杂性
- python - PyQt5 QThread 不会因终止或标志变量而停止
- c# - Google Drive API 上传到 C# 中的共享驱动器
- javascript - 如何让正则表达式仅匹配具有已定义用户名字符的单词而不定义不允许的字符?
- php - Eloquent Models 继承问题(客户、供应商、员工)
- rust - 有什么比在原始套接字上使用 libc 来实现任意协议更好的呢?
- wcf - wsdl 未显示 XML-WCF
- swift - 使用 Swift 的 withUnsafeMutableBytes 包装器的问题
- ajax - ajax 错误的传单层可视化问题:未调用 parseResponse
- c# - 使用 DataGridView 和 TextBox 在 C# 中的格式问题