c# - 以编程方式将重点放在 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>
解决方案
以编程方式将重点放在 uwp 中的网格控制上
从这个案例中得出:
按键按下事件仅从键盘聚焦控制触发。并且 Grid 不是控件,Grid 是 Panel。在 UWP 中,只有控件可以设置焦点。
请尝试编写一个空控件并将其添加到 Grid,然后以编程方式设置控件焦点。
详细步骤请参考以上案例链接。
推荐阅读
- c++ - memcpy 的奇怪行为
- reactjs - 使用 React 进行 Firebase Google 身份验证
- python - 通过 docker 文件挂载主机目录的问题,检索无法打开文件 .h5
- php - 无法使用 PHP 从 IIS Web 服务器的服务帐户连接到 SQL 2019
- laravel - Laravel 语言文件新添加的字符串不起作用
- python - Zeep:努力将 mustunderstand=1 添加到 WSE 标头
- php - 在 laravel 中获取用户当前位置
- c# - 读取 NameValueCollections 的 C# 列表的意外结果
- javascript - 根据另一个键的值验证两个字段之一是否存在或不存在
- python - 使用 python 在 SQLite3 中搜索变量