【发布时间】:2010-12-28 03:57:02
【问题描述】:
经过几个小时的谷歌搜索,我无法找到任何关于这个问题的 cmets。我们有一个带有透明背景的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 操作。旨在修复的应用程序是锁定模式应用程序,因此用户永远无法真正摆脱在桌面上运行的应用程序。任何建议、示例、见解或正确方向的观点将不胜感激,谢谢! =)
【问题讨论】:
-
我看到了同样的事情,但我注意到窗口在步骤 2 中 Alt-Tabbing 后捕获了 ALT-F4,因此它似乎确实获得了焦点。不过,目前还没有关于如何纠正这种行为的线索。
-
我在 Vista/32 上运行它,但窗口确实没有消失。
-
我还注意到,如果您在第 2 步期间 Alt+Tab 到任何其他窗口而不是 WPF 应用程序,则 WPF 应用程序将意外地显示在您选择的任何窗口旁边。
-
一些没有解决方案的反馈:当您发送 WND+M 快捷方式以最小化所有窗口时,或者当您使用“Aero-shake”来最小化除顶部之外的所有窗口时,该窗口也不会最小化窗户。当切换到“基本”主题而不是“航空”主题时,这些问题也不会消失。
-
Ben,我可以确认 Vista 上的“Tab to other Win”和 Win+M 观察。无需摇晃即可测试。
标签: wpf xaml windows-7 alt-tab