首页 > 解决方案 > 以编程方式将重点放在 uwp 中的网格控制上

问题描述

我在 UWP 应用程序中有一个带有 KeyUp 处理程序的 Grid 控件。在这个网格上,我有一个按钮。单击按钮时,按钮保持焦点。结果,击键事件不由附加到网格的处理程序处理。这是我的应用程序中不希望出现的行为。

如果我在网格上手动单击,它将获得焦点并且 keyevents 再次工作,这是所需的行为。我想以编程方式解决这个问题。我正在考虑通过在按钮单击事件代码中实现将焦点再次设置到网格来解决这个问题。

想出了这个文档 https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.control.focus

所以我希望能够编写Grid.Focus(FocusState.Programmatic); 但是,Grid 控件上不存在 Focus 方法。

任何人都知道我做错了什么或者如何解决这个问题?

XAML 的简化示例

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="Grid" KeyUp="Grid_KeyUp">
    <Button Content="MP3" Margin="5" Click="btnOpenMP3_Click" />
</Grid>

标签: c#uwpfocusgrid-layout

解决方案


以编程方式将重点放在 uwp 中的网格控制上

从这个案例中得出:

按键按下事件仅从键盘聚焦控制触发。并且 Grid 不是控件,Grid 是 Panel。在 UWP 中,只有控件可以设置焦点。

请尝试编写一个空控件并将其添加到 Grid,然后以编程方式设置控件焦点。

详细步骤请参考以上案例链接。


推荐阅读