我在Windows Vista Vista上遇到了关于WPF窗口的问题。
我创建了一个包含以下属性的窗口:
WindowStyle="None"
ShowInTaskbar="False"
ResizeMode="NoResize"
Background="Transparent"
ShowInTaskbar设置为false,这意味着窗口不会显示任务栏按钮,但您可以使用Alt + tab在taskbarlist中看到它
在我的应用程序中,当收到一些事件时,将创建窗口并显示Show(),例如
window1 wd = new windw1();
wd.topmost = true;
wd.show();
我碰巧在以下情况中发现窗口没有正确显示
电源管理器中的我的显示设置设置为在1分钟内关闭显示,
1分钟后,我的显示屏关闭,之后有一个事件触发了窗口显示,但是在我移动鼠标以显示窗口后,我没有看到窗口显示,相反,当我使用Alt + Tab时,我可以在taskbarlist中找到一个透明的窗口,带有我的应用程序图标。这很奇怪。点击“显示桌面”两次后,窗口显示自己。
我在互联网上搜索,发现似乎当showtaskbar设置为false时,会创建另一个透明窗口,它是当前窗口的所有者,这解释了为什么我可以在taskbarlist中看到透明窗口使用Alt + Tab键。我认为在这种情况下窗口没有正确绘制。
我认为这是WPF的一个错误,有什么解决方法吗?
提前致谢
答案 0 :(得分:0)
您可以让您的应用程序获得电源感知并使其检查显示器的状态。请参阅http://msdn.microsoft.com/en-us/library/ms703398%28VS.85%29.aspx。 然后,您可以订阅Powerbroadcast,并在重新打开显示器时获得通知。 在该事件中,您可以强制您的应用程序重绘相关窗口。
可悲的是,这只是一种解决方法,并没有解决最初的问题