本文告诉大家一个 WPF 的已知问题,如果窗口在创建的时候,设置在屏幕外,那这个窗口将不会进行实际的渲染,将这个窗口从屏幕外移到屏幕内的时候,将会出现窗口内容的一次闪烁。换句话说就是存在窗口内容的重渲染
什么是窗口在屏幕外创建?简单说法就是窗口不在屏幕内,如窗口的 Top 或 Left 太大或太小等,如下面代码创建窗口,而我的屏幕没有那么大,因此窗口就显示在我的屏幕外
运行如上面代码,可以看到在 window.Top = 200;
调用的时候,将窗口从屏幕外移动到屏幕内时,窗口的背景从白色切换为灰色。如果你看不到,只能证明你的电脑性能太好了,换个渣设备试试
本文代码放在 github 欢迎小伙伴访问
如果你将设置窗口的位置,也就是设置 Top = 100000 // 手动高亮,我的屏幕没有那么大
放在 Show 之后的一个 Render 内,那么依然窗口闪烁
如果放在 Render 外,此时用户就可以先看到窗口显示在屏幕上,然后窗口再消失,依然可以看到窗口闪烁。但是如果窗口能足够卡,也许此时很多设备都是看不到这个创建的窗口
原文链接: http://blog.lindexi.com/post/WPF-%E5%B7%B2%E7%9F%A5%E9%97%AE%E9%A2%98-%E7%AA%97%E5%8F%A3%E5%9C%A8%E5%B1%8F%E5%B9%95%E5%A4%96%E5%88%9B%E5%BB%BA%E5%B0%86%E4%B8%8D%E4%BC%9A%E5%88%B7%E6%96%B0%E6%B8%B2%E6%9F%93
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。