在没有控件的情况下处理UWP应用中的键盘事件

时间:2018-12-01 22:15:23

标签: uwp keyboard-events

我正在开发一个UWP应用程序,该应用程序实际上没有任何内置键盘处理控件,它是Grid的一棵大树,其中有InkCanvasWin2D,常规CanvasImage

我在KeyDown上声明了PreviewKeyDownPage处理程序,但是当我在基本设置中按一个按钮时,它们不会被调用。

我发现可以从页面上调用Focus(FocusState.Programmatic);,然后收到关键事件,但是直到我将注意力集中在(单击)InkCanvas上。

然后我在文档中找到了Keyboard alternatives to pointer actions and events for specific control elements部分。建议在自己的自定义控件上设置IsTabStop,或将所有内容包装在<Button>中。

后一种工作,我可以将根Grid包在Button中,然后无论我最后一次关注哪个元素,每次都会触发KeyDown。 /> 这只是感觉是完全错误的,并且还会创建一些视觉上的“伪像”。 (它在所有内容周围绘制一个按钮...)

IsTabStop也可以,但是我需要开始将所有内容包装在自定义控件中(例如Image)。它似乎并没有在树上“继承”。

这方面是否有最佳实践?在我的应用程序中处理任何按键都不应该那么难,对吗?

0 个答案:

没有答案