0

ListView画像、シャドウ効果、ぼかし効果などで構成されるさまざまな複雑なコンテナーを使用していListViewItemます。これらのコンテナーを大量にレンダリングすると、特に の上にぼかしオーバーレイ フレームを使用しているため、パフォーマンスが大幅に低下しListViewます。CacheModeこれが、この場合に設定している理由ですBitmapCache(最大 15 倍の fps でパフォーマンスを向上させます)。

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

問題は、 aWrapPanelと aValueConverterを使用して動的にサイズを変更し、これらのコンテナを に合わせてWrapPanel、水平ビューまたはタイル ビューのスペースを完全に埋めることです。どうやら、それはキャッシングではうまく機能せず、深刻なラグ/ストール (フレームが 0 に落ちる) を引き起こします。

現在、私の3つのオプションは次のとおりです。

  • キャッシングを無効にします (ほぼ 15 fps で動作します)。
  • サイズ変更を無効にする (容認できないように見える)
  • ウィンドウのサイズを変更する場合にのみキャッシュとサイズ変更を無効にします(それでもパフォーマンスは低下しますが、これが私が持っている最良のオプションです)

私の質問:

  • キャッシングを使用してサイズを変更すると、キャッシングを使用せずにサイズを変更すると、パフォーマンスが大幅に低下するのはなぜですか?
  • キャッシングを誤用していますか、それとも間違っていますか?
  • 妥協せずにこの混乱を修正するより良い方法はありますか?
4

1 に答える 1