ObservableCollectionにバインドされたWPF ListView/GridViewを使用しているウィンドウがあります。パフォーマンスは非常に恐ろしいです。アイテムが追加/削除/変更されるたびに、アプリケーションは300〜400アイテムとCPU使用率の急上昇を試みます。プロファイリングでは明らかなことは明らかになりません。WPF listview/gridview performance恐ろしい、提案
誰もが何か提案がありますか?
ObservableCollectionにバインドされたWPF ListView/GridViewを使用しているウィンドウがあります。パフォーマンスは非常に恐ろしいです。アイテムが追加/削除/変更されるたびに、アプリケーションは300〜400アイテムとCPU使用率の急上昇を試みます。プロファイリングでは明らかなことは明らかになりません。WPF listview/gridview performance恐ろしい、提案
誰もが何か提案がありますか?
まず、ListViewItemごとに複雑なデータテンプレートを使用していますか?これは、たくさんの画像から、古いBitmapEffectsまで、データベースからオンデマンドでデータをフェッチするレイジーロードされたプロパティでさえあります(データモデルの仕方に応じて、各ビジュアルをレンダリングするために多くのdb呼び出しを実行する可能性があります)作品)。
2番目の推測は、ロード/追加/修正/削除されたルーチンを素早く実行できるリスト(データのレンダリング時に問題が発生したことを意味します)、またはリスト自体がそのジョブをゆっくり実行しますいくつかの種類の問題)。
使用されているDataTemplateには、単一のTextBlockが含まれています。 –
データベース呼び出しは行われません。 –
問題を再現するコードをもう少し共有できますか?たぶん、それを引き起こすために最低限しか実行しない単純な新しいソリューションですか? – Adrian
この質問でお勧めの仮想化を試しましたか?
WPF ListView Very Slow Performance - Why? (ElementHost, or Other Reason?)
これは、すでにVirtualizationStackPanelであるデフォルト以外のものを使用するようにItemsPanelプロパティを明示的に設定している場合にのみ役立ちます。 – Adrian
これらのプロパティをチェックアウト:
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True"
と明らかに1を、あなたは3.5 SP1を.NETにアップグレードしたことを確認し、そこにパフォーマンスの向上がたくさんありました。
また、WPF datagridviewコントロールを調べる価値があるかもしれません.net 3.5 SP1で多くのパフォーマンス作業が行われていたため、datagridviewは大きなデータセットで優れたパフォーマンスを発揮します。
http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25047
この記事で説明したようにあなたは、あなたのListViewのItemSourceを仮想化する必要があります。WPF: Data VirtualizationCodeProjectにポールMcClean氏
によって使用されているのDataTemplateは、単一のTextBlockが含まれています。 –