经过几个小时的谷歌搜索后,我无法找到有关此问题的任何评论。我们有一个WindowStyle=None
透明背景的窗口,允许透明并且不显示在任务栏中,这一切都很正常。这是 XAML,因此您可以自己测试:
<Window x:Class="AltTabTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="TestWindow" Title="TestWindow"
WindowStyle="None" AllowsTransparency="True" ResizeMode="NoResize"
Background="Transparent" ShowInTaskbar="False"
Width="816" Height="820">
<Grid>
<Border BorderThickness="0" Background="LightBlue" CornerRadius="15" />
</Grid>
现在奇怪的是,一旦您编译并运行此窗口,请按照以下步骤操作:
- 单击显示桌面以隐藏所有应用程序
- Alt+Tab 返回 WPF 测试应用
- 单击浅蓝色边框区域外部(到桌面工作区)
- 观察 WPF 测试应用程序神奇地消失
- 可选择 Alt+Tab 到任何其他正在运行的应用程序,并观察 WPF 测试应用程序神奇地重新出现
所以我的问题是:这到底是怎么回事?!这是预期的行为吗?如果是这样,有什么办法可以解决吗?
在解决 Alt+Tab 之后,感觉 WPF 应用程序并没有真正获得焦点。请注意,这是在 Windows 7 中测试的,我还没有能力在 Vista 或 XP 中进行测试。我想要一种强制应用程序真正获得焦点的方法,但如果这不可能,那么我想知道是否有办法捕获和忽略 Alt+Tab 操作。旨在修复的应用程序是锁定模式应用程序,因此用户永远无法真正摆脱在桌面上运行的应用程序。任何建议、示例、见解或正确方向的观点将不胜感激,谢谢!=)