在Windows8上以编程方式显示/隐藏键盘

pku*_*ar0 9 microsoft-metro windows-8

我试图以编程方式在Windows Metro应用程序上显示/隐藏键盘.我最初认为我可以使用折叠的文本框并设置焦点来实现它.但似乎在这个链接中不允许这样做.该链接还讨论了AutomationPeer和TextAutomationPeer来实现这一目标.有没有关于如何使用这些资源的资源?

在此先感谢PK

N_A*_*N_A 3

这里

UI 自动化是开发人员用来传达特定 UI 元素是否可以接收文本输入的机制。您必须确保在应用程序中设置适当的辅助功能属性,以便当焦点落在特定 UI 元素上时触摸键盘会出现。对于 Windows 提供的控件,这将自动完成,因为默认情况下会设置正确的辅助功能属性,但对于自定义控件和体验,您必须执行额外的工作才能正确设置辅助功能属性;请记住,触摸键盘会对这些属性做出反应。

如果您使用 C# 或 C++,请使用 AutomationPeer 对象,特别是 TextAutomationPeer。Windows 8 Release Preview 示例将演示如何在 C# 中执行此操作。请记住,除了具有适当的辅助功能设置之外,该控件还必须是可编辑的,并且能够接收文本以调用键盘。在无法接收文本的情况下指示某些内容可以接收文本会误导辅助功能工具和依赖它们的用户。

为了启用用户驱动的调用,我们跟踪最后一个触摸事件的坐标,并将它们与当前具有焦点的元素的边界矩形的位置进行比较。如果该点包含在边界矩形内,则调用触摸键盘。

所以你不能以编程方式显示键盘。隐藏/显示键盘的适当方法是将控件设置为使用 AutomationPeer 对象接受输入。

这里,如果您将输入控件设置为只读,那么它将不会触发键盘,因此您可能可以使用它来控制键盘何时打开。

编辑:

实现文本自动化对等点时需要检查一些事项:

  1. 确保使用真实的触摸设备进行测试,或者使用带有基本触摸模式工具的模拟器进行测试。如果您不这样做,自动化对等点将不会激活,因为它只能通过手写笔或触摸输入(而不是鼠标)激活。

  2. 确保您的自定义控件实现OnCreateAutomationPeer如下所示:

    受保护的覆盖 AutomationPeer OnCreateAutomationPeer() { 返回新的 CustomControl2AutomationPeer(this); }

  3. 确保您的自动化同行实现了FrameworkElementAutomationPeerITextProvider并且IValueProvider

更多详细信息请参见此处的示例。