У меня есть ListView
с различными сложными ListViewItem
контейнерами, состоящими из изображений, эффектов теней, эффектов размытия и т. Д. Рендеринг этих контейнеров в больших количествах сильно снижает производительность, тем более что я использую рамку наложения размытия наверхняя часть ListView
.Вот почему в этом случае я устанавливаю CacheMode
на BitmapCache
(повышает производительность до 15 раз в секунду).
<Border.CacheMode>
<BitmapCache />
</Border.CacheMode>
Проблема в том, что я использую WrapPanel
и ValueConverter
для динамического изменения размера и размещения этих контейнеров в WrapPanel
, чтобы они полностью заполняли пространство в горизонтальном или мозаичном виде.По-видимому, это плохо работает с кэшированием и приводит к серьезным задержкам / задержкам (количество кадров уменьшается до 0).
В настоящее время у меня есть 3 варианта:
- Отключить кэширование (и житьс почти 15fps)
- Отключить изменение размера (выглядит неприемлемо)
- Отключить кэширование и изменение размера только при изменении размера окна (по-прежнему работает плохо, но это лучший вариант, который у меня есть)
Мои вопросы:
- Почему я получаю эти огромные падения производительности при изменении размера с кэшированием по сравнению с кэшированием?
- Я неправильно использую кэширование или неправильно?
- Есть ли лучший способ исправить этот беспорядок без компромиссов?