检查Windows Phone 8中是否打开了软件键盘?

时间:2013-05-02 02:52:43

标签: vb.net windows-phone-8

我想检查Windows Phone 8中是否打开了软件键盘。我发现使用CoreWindow.IsKeyboardInputEnabled可能会出现一些稀疏信息,但我找不到任何方法来实现它。我找到了仅适用于C ++的示例代码,我完全不了解。

我使用VB,但是如果我能得到一个C#示例,我可以阅读C#足以弄明白。

无论我做什么,我总是得到null / nothing值。以下代码编译并运行,但当应用程序在if c.IsKeyboarInputEnabled ...行崩溃时,c为“无”。

Dim c as CoreWindow
c = CoreWindow.GetForCurrentThread
if c.IsKeyboardInputEnabled then...

我知道我需要给'c'一个值,但无法弄清楚如何。我也试过了:

Dim c as CoreWindow = New CoreWindow

编辑器将其标记为错误,因此无法编译。

如果它是相关的,我想要做的是确保我的导航是一致的。目前,点击特定屏幕元素应关闭该元素。但是,如果键盘处于打开状态,我希望只需关闭键盘并将点击的项目保持打开状态。我相信这是用户更直观,更一致的方法。

我认为实现此功能的唯一方法是在确定如何处理任何打开的面板之前知道键盘是否打开。

e.g。 [当点击屏幕并弹出一个弹出窗口时]

如果[键盘可见]则[关闭键盘]否则[关闭点按项目]

1 个答案:

答案 0 :(得分:0)

我认为没有任何官方API可以检测SIP的打开和关闭,但有一种解决方法可能是检查是否有任何TextBox都有焦点。

您可以通过覆盖每个TextBox的GetFocus和LostFocus来完成此操作。

要关闭键盘,只需将焦点设置为ContentPanel(或任何其他网格)。

让我知道这是否有效。