我们开始在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键盘是否可以通过编程方式停靠以获得最大化的窗口?
答案 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>
希望这会有所帮助!