记录WPF 设置控件VisualCacheMode = new BitmapCache()会导致控件渲染不出来的问题

首选设置VisualCacheMode = new BitmapCache(),是为了让WPF控件渲染的更快,针对频繁变化的UI元素使用这个属性提高渲染速度。

下面是微软官网关于VisaulCacheMode关于如何通过使用 BitmapCache 类来提高复杂 UIElement的渲染性能介绍。

Visual.VisualCacheMode 属性 (System.Windows.Media)

BitmapCache 类 (System.Windows.Media)

如何:通过缓存元素来提高呈现性能 - WPF

问题:

在WPF第一个窗口中点击显示第二个窗口的时候,第二个窗口若是有控件使用了BitmapCache。那么在按下Win+L锁屏或者弹出UAC提示之后,第二个窗口上使用BitmapCache的控件就无法渲染显示出来。

现在我遇到的问题就是第一个窗口点击显示白板书写窗口的时候,白板书写笔迹使用了BitmapCache的笔迹就无法渲染出来。

同样的问题在stack overflow上有提问:https://stackoverflow.com/questions/3632361/bitmapcache-causes-wpf-application-to-lock-up

WPF官方项目中的Issues:Regarding WPF BitmapCache Issue + R&D + Solutions · Issue #8919 · dotnet/wpf

规避措施:

使用BitmapCache的控件在都在主窗口上。子窗口建议还是不要使用VisualCacheMode = new BitmapCache()了。

posted @ 2025-10-15 14:35  拚忘  阅读(13)  评论(2)    收藏  举报