WPF程序在surface pro 9 windows 11操作系统下触摸一个透明背景窗口,透明背景消失
Surface pro 9 windows 11专业版操作系统下,触摸屏触摸到WPF透明背景窗口边缘时会导致透明窗口变成“云白”颜色,而失去透明效果,需要再次触摸窗口边缘才能恢复透明状态,具体如下图:
窗体透明时的效果
触摸屏触摸窗体边缘,透明窗口变“云白”色效果
出问题时操作系统版本
1. 为了尽可能的描述问题,我对该问题目前收集的资料同步出来;
使用WPF .net framework 4.6.1开发窗体应用,因需求所迫,窗口背景必须设置为透明,但是窗体上面的控件不透明,点击窗口透明的部分,鼠标不应穿透透明窗体。
为了实现上面的需求调查了wpf窗口透明的两种方式
方式一(调研时被排除掉了):
在xaml窗体设计器里将window的AllowsTransparency属性设置为true,Background属性设置为Transparent,WindowStyle属性设置为None。
这样做虽然窗口背景透明了,但是点击窗口透明部分鼠标能穿透窗体点击到窗体下面的控件,所以该方案被否决
方式二(现在正在使用的方式,同时也会出现本问题)
该方式参考了该网页的设计
https://www.cnblogs.com/microsoft-zh/p/16005873.html
设置window的Template,将其内部border的background设置为Transparent。
按照这种方式实现,窗体背景透明了,且鼠标不会穿透窗体。但是就引发了上述的问题,即在【Surface pro 9 windows 11专业版操作系统下,触摸屏触摸到WPF透明背景窗口边缘时会导致透明窗口变成“云白”颜色,而失去透明效果,需要再次触摸窗口边缘才能恢复透明状态】
经过尝试发现该问题仅在使用触摸屏时才会出现,使用鼠标点击窗口边缘不会出现该问题;在surface pro 7+等预装windows 10的surface pro上,用触摸屏也无法复现该问题。
我进一步确认了该问题与windows11的新特性有关系。因为在windows的设置中有一个名为透明效果的开关,我关闭之后,上述“云白”效果发生了改变。
触摸屏点击窗口边缘时出现的“云白”效果变化了
我还注意到windows11与windows10相比,在触摸屏下长按窗口标题时,windows 11的窗体四周会出现类似于“云白”的效果,但是windows10并没有此种效果。并且windows11在鼠标操作小也没有这种效果。
如下图,触摸屏下长按windows 11 的windows窗体,窗体四周出现“云白”
同样,关闭操作系统设置中的“透明效果”开关,上述窗体四周效果也变化了
附带一个demo帮助复现,根据链接下载即可,这个程序运行时会创建一个全屏的窗口,在触摸屏上,且是windows 11操作系统时,点击屏幕的边缘就会把透明背景变“云白”
链接:https://pan.baidu.com/s/1pymb-ipLThLb8S77HOqVZw?pwd=x24v
提取码:x24v
我想请您帮忙看看,我想在windows 11使用触摸屏时,即使触摸到窗体边缘,也不要影响透明效果。如果实现不了,能否告知如何在windows 11上禁用这种特性,好让我可以暂时先用着。