打开停靠在WPF中的Windows 10触摸键盘

时间:2016-01-13 14:25:05

标签: c# wpf windows-10 on-screen-keyboard

我们开始在Windows 8中创建WPF触摸应用程序,并且最近已迁移到Windows 10.我们实现的一项功能是在EdgeTargetDockedState获得焦点时打开Windows键盘。在Windows 8中,可以通过设置注册表设置 string path = @"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe"; var info = new ProcessStartInfo(path); info.WindowStyle = ProcessWindowStyle.Maximized; var p = new Process(); p.StartInfo = info; p.Start(); 并启动TabTip过程将键盘停靠在底部:

New

Windows 10键盘似乎没有Windows 8中的停靠行为。键盘现在覆盖任何最大化的窗口,隐藏任何应用程序的底部。只调整未最大化的窗口大小以适应剩余空间。

我已查看以下链接,但未找到解决方案:

Windows 10键盘是否可以通过编程方式停靠以获得最大化的窗口?

2 个答案:

答案 0 :(得分:5)

我开源我的项目,以自动化有关WPF应用程序中TabTip集成的所有内容。

你可以在nuget上获得它,然后你需要的只是你的应用启动逻辑中的简单配置:

TabTipAutomation.BindTo<TextBox>();

您可以将TabTip自动化逻辑绑定到任何UIElement。当任何此类元素获得焦点时,虚拟键盘将打开,当元素失去焦点时,它将关闭。不仅如此,TabTipAutomation还会将UIElement(或Window)移动到视图中,这样TabTip就不会阻止聚焦元素。

有关详细信息,请参阅project site

澄清一下:如果您将使用此软件包,TabTip将不会停靠,但您的UI将在视图中,我想这是您想要实现的。

答案 1 :(得分:0)

这里的答案很旧,即使在窗口最大化的情况下,当前触摸键盘在点击任何文本框时也能正常工作。

由于该版本中已修复的WPF中的错误,我建议至少定位.NET 4.6.2以获得Windows 10中对触摸键盘的最佳支持。 Read more here,向下滚动到WPF部分。

您唯一要做的就是设计XAML,以使您的用户界面在触摸键盘出现时可以正确响应。通常,像这样将您的内容放入ScrollViewer内就足够了:

<ScrollViewer PanningMode="VerticalOnly"
              VerticalScrollBarVisibility="Hidden" 
              HorizontalScrollBarVisibility="Disabled"
    <!--Content here-->
</ScrollViewer>

但是对于更高级的情况,例如将按钮从底部移动到键盘上方,则需要更仔细地在ScrollViewer内编写XAML,例如,使用具有动态高度的网格。 / p>

希望这会有所帮助!

相关问题