调整大小时 BitmapCache 性能不佳

BitmapCache poor performance while resizing

我有一个 ListView,其中包含不同的复杂 ListViewItem 容器,其中包含图像、阴影效果、模糊效果等。大量渲染这些容器会严重降低性能,尤其是因为我在 ListView 上使用模糊叠加框。这就是为什么在这种情况下我将 CacheMode 设置为 BitmapCache(将性能提高高达 15 倍的 fps)。

<Border.CacheMode>
    <BitmapCache />
</Border.CacheMode>

问题是我使用 WrapPanelValueConverter 动态调整大小并将这些容器放入 WrapPanel 中,以便它们完全填充 space水平或平铺视图。显然,这不适用于缓存,它会产生严重的 lags/stalls(帧下降到 0)。

目前我的 3 个选项是:

我的问题:

好的。经过大量阅读和试验,我想到了两件事:

  • 首先,Caching 不应用于经常调整大小的元素,尤其是当它们太多时(无法找出原因)。所以,我基本上缓存了固定大小的子元素。

  • 这让我想起了 Virtualization 这正是我所缺少但不知道 WPF Lists 支持的内容。

通过更多优化,现在,我可以调整 window 黄油般光滑的大小。