如果我使用一个简单的空窗口创建一个新的WPF应用程序,如下面显示的代码,我发现WPF应用程序覆盖的所有应用程序都失去了触摸或手写笔反应。只有在Windows 10升级到1803(10.0.17134.0)时才能重现。
<Window x:Class="TheWPFCoveringWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None" WindowState="Maximized"
AllowsTransparency="True" Background="Transparent"
Topmost="True">
<Button Content="Test" Width="200" Height="100" />
</Window>
我写了另一个WPF应用程序来找出发生了什么。所以我将一个StylusDown事件添加到Window,如下所示的代码:
// This code is in another WPF application.
private void OnStylusDown(object sender, StylusDownEventArgs e)
{
// Set a breakpoint here.
}
但是在我关闭位于顶部的透明WPF窗口之前,断点永远不会达到。
我将非常简单的代码推送到GitHub:dotnet-campus/TouchIssueOnWindows10.0.17134。克隆它可能会有所帮助。
为什么会发生这种情况以及如何解决?任何回复都表示赞赏。
答案 0 :(得分:4)
Microsoft已在 .NET Framework August 2018 Preview of Quality Rollup 中解决了此问题。
解决了在具有透明覆盖窗口的Windows Presentation Foundation(WPF)应用程序中处理触摸和鼠标事件的问题。
经过整整一周的调试,我终于找到了解决方案。
只需为Window添加ResizeMode="NoResize"
属性,如下所示:
<Window x:Class="TheWPFCoveringWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None" WindowState="Maximized"
AllowsTransparency="True" ResizeMode="NoResize"
Background="Transparent" Topmost="True">
<Button Content="Test" Width="200" Height="100" />
</Window>
@lindexi已将此问题及此解决方案发布到他的帖子中。如果您想了解有关此问题的更多信息,请阅读win10 17025 touch bug - lindexi以获取更多详细信息。 (这篇文章是用多种语言编写的,所以即使忽略了未知的字符,你也不会错过任何内容。)
实际上,我仍然无法弄清楚这个属性有何帮助。
有人能解释这个问题的原因吗?