触摸键盘隐藏 UI 元素 [Windows 10 & WPF]
Touch Keyboard Hiding UI Element [Windows 10 & WPF]
我正在使用 .NET 5 为 Windows 10 编写 'touch-able' WPF 应用程序。
我一直在 Stack Overflow 上寻找答案,但我没有找到任何答案,这就是我问这个问题的原因。
首先,我的 MainWindow 不是 'Maximized',我的 WindowStyle 也不是 'None'。
<Window
x:Class="App1234.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:prism="http://prismlibrary.com/"
xmlns:notifications="clr-namespace:Notification.Wpf.Controls;assembly=Notifications.Wpf"
Title="App1234"
d:DesignHeight="1200"
d:DesignWidth="1920"
prism:ViewModelLocator.AutoWireViewModel="True"
Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{materialDesign:MaterialDesignFont}"
Loaded="MainWindow_OnLoaded"
TextElement.FontSize="14"
TextElement.FontWeight="Medium"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
mc:Ignorable="d">
我可以触摸下方的文本框并打开触摸键盘。
但是我看不到控件,因为键盘隐藏了它。
我想“调整”我的应用程序以便仍然看到控件
如何在 WPF 应用程序中实现此行为?
谢谢你,亚瑟
更新:
我们还以管理员身份启动了没有 uiAccess 标志的应用程序。解决方案(除了回复之外)是删除管理员要求。
我和 OP 在做同一个项目。
我们发现了这个 https://github.com/microsoft/WPF-Samples/tree/master/Input%20and%20Commands/TouchKeyboard。
在此示例中,Microsoft 提供了一些代码来解决 WPF 与 .net 框架的问题。
现在这对他们的用例很有效。但我一直在尝试用 NET 5 项目实现他们的代码。不出所料,这似乎是不可能的(应用程序只是在启动和溢出时崩溃)
那么有人知道是否有办法让应用程序同时使用 NET 5 和 .net 框架吗?
或
在 Net 5 中移植 Microsoft 的修复程序,以便我们也可以使用它!
谢谢。
更新
因此,经过进一步的研究,我发现了如何借助此 post http://mheironimus.blogspot.com/2015/05/adding-touch-keyboard-support-to-wpf.html 解决我们的问题。
还有这个
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
var elementWithFocus = Keyboard.FocusedElement as FrameworkElement;
if ((elementWithFocus != null) && ((e.PreviousSize.Height > e.NewSize.Height)))
{
elementWithFocus.BringIntoView();
}
}
这两个链接都有助于理解问题所在。首先,xaml 必须以 windows 可以在键盘出现时调整应用程序大小的方式进行编码,基本上一个带有堆栈面板的滚动查看器就可以了。
但这仅足以使 window 调整大小,这是代码片段允许滚动查看器“滚动”到单击的元素并将其调到虚拟触摸键盘上方的时候。
感谢其他 post 用户,希望这 post 也能帮助其他人。
我正在使用 .NET 5 为 Windows 10 编写 'touch-able' WPF 应用程序。
我一直在 Stack Overflow 上寻找答案,但我没有找到任何答案,这就是我问这个问题的原因。
首先,我的 MainWindow 不是 'Maximized',我的 WindowStyle 也不是 'None'。
<Window
x:Class="App1234.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:prism="http://prismlibrary.com/"
xmlns:notifications="clr-namespace:Notification.Wpf.Controls;assembly=Notifications.Wpf"
Title="App1234"
d:DesignHeight="1200"
d:DesignWidth="1920"
prism:ViewModelLocator.AutoWireViewModel="True"
Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{materialDesign:MaterialDesignFont}"
Loaded="MainWindow_OnLoaded"
TextElement.FontSize="14"
TextElement.FontWeight="Medium"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
mc:Ignorable="d">
我可以触摸下方的文本框并打开触摸键盘。 但是我看不到控件,因为键盘隐藏了它。 我想“调整”我的应用程序以便仍然看到控件
如何在 WPF 应用程序中实现此行为?
谢谢你,亚瑟
更新:
我们还以管理员身份启动了没有 uiAccess 标志的应用程序。解决方案(除了回复之外)是删除管理员要求。
我和 OP 在做同一个项目。
我们发现了这个 https://github.com/microsoft/WPF-Samples/tree/master/Input%20and%20Commands/TouchKeyboard。 在此示例中,Microsoft 提供了一些代码来解决 WPF 与 .net 框架的问题。
现在这对他们的用例很有效。但我一直在尝试用 NET 5 项目实现他们的代码。不出所料,这似乎是不可能的(应用程序只是在启动和溢出时崩溃)
那么有人知道是否有办法让应用程序同时使用 NET 5 和 .net 框架吗?
或
在 Net 5 中移植 Microsoft 的修复程序,以便我们也可以使用它!
谢谢。
更新
因此,经过进一步的研究,我发现了如何借助此 post http://mheironimus.blogspot.com/2015/05/adding-touch-keyboard-support-to-wpf.html 解决我们的问题。
还有这个
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
var elementWithFocus = Keyboard.FocusedElement as FrameworkElement;
if ((elementWithFocus != null) && ((e.PreviousSize.Height > e.NewSize.Height)))
{
elementWithFocus.BringIntoView();
}
}
这两个链接都有助于理解问题所在。首先,xaml 必须以 windows 可以在键盘出现时调整应用程序大小的方式进行编码,基本上一个带有堆栈面板的滚动查看器就可以了。
但这仅足以使 window 调整大小,这是代码片段允许滚动查看器“滚动”到单击的元素并将其调到虚拟触摸键盘上方的时候。
感谢其他 post 用户,希望这 post 也能帮助其他人。