c# - 即使焦点更改后键盘也不会消失

标签 c# windows xaml

我正在创建 Windows 8.1 应用程序,在用户按下按钮后,会在大部分屏幕上打开一个弹出窗口。弹出框内有几个文本框。

我找到了 this来自微软的关于如何检测屏幕键盘外观的示例代码。

我还发现以下 SO 帖子和网站基本上告知无法强制关闭键盘,而正确的做法实际上是以编程方式将隐藏元素聚焦在页面上或禁用然后重新 -启用文本框:

所以我听从了建议并创建了一个不可见的按钮。当用户点击关闭按钮时,应该将焦点放在该按钮上并关闭键盘。发生的情况是文本框确实失去了焦点,但键盘并没有消失。如果我使关闭按钮将焦点放在隐藏按钮上 关闭弹出窗口(这是所需的效果),则键盘不会消失,直到 View (以前在弹出窗口下)出现敲击。

如何让关闭弹出窗口导致键盘关闭?

编辑:似乎有一种方法可以以编程方式关闭键盘,因为在键盘打开时触发应用栏打开会自动关闭键盘。

最佳答案

当显示虚拟键盘的文本框被禁用时,它将关闭虚拟键盘。所以解决方案是将文本框属性 IsEnabled 设置为 false,然后再次将其设置为 true,以便再次使用。

TextBox.KeyDown += (s, a) => {
 if (a.Key == VirtualKey.Enter) {
   TextBox.IsEnabled = false;
   TextBox.IsEnabled = true;
 }

关于c# - 即使焦点更改后键盘也不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858141/

相关文章:

c# - 转义 String.Format 占位符

c# - 用户 '' 登录失败,无法打开登录请求的数据库 "Database1.mdf"。登录失败。用户 'rBcollo-PC\rBcollo' 登录失败

python - Windows 文件路径中的反斜杠?

Windows 商店 UWP : ApplicationContentUriRule with 'all' or 'allowForWebOnly'

wpf - 为什么我无法将 ToggleButton.IsChecked 属性附加到 Expander

c# - 为 Visual Studio 创建代码生成器插件

c# - 如何在不使用命令生成器的情况下将行从我的数据集插入到我的数据库中?

c++ - 为什么 ZeroMQ PGM 多播没有收到多播消息? ( C++, Windows )

c# - 我需要使用 MVVM 导航到另一个包含 WPF 中父对象的子对象的 View

xaml - Xamarin Forms - 我的 ContentPresenter 不会显示其内容