2011-11-15 6 views
2

DataGridの.ItemsSourceをコレクションに設定するときに、常に大きなパフォーマンス上の問題が発生しました。メソッドは高速に戻りますが、何かが実際にスクリーンにレンダリングされる前に、非常に目立つ遅延があります。 Datagridには仮想化モードが設定されているので、非常に大きなコレクションを簡単に処理できるはずです。私はアイテムコレクションのバインドされたプロパティにいくつかのデバッグ情報を出力して、コレクション全体をロードしていないことを確認しましたが、最初の数アイテムにしかアクセスしなかったので、仮想化が機能していると確信しています。小さなコレクションの場合でも、遅延はほぼ同じなので、実際のデータ読み込みとは無関係のようです。GridViewとDataGridのパフォーマンス

これは純粋に減速の原因となるレンダリングです。ほとんどの場合、これはScrollViewer内にDatagridを持つか、または行の高さを自動的に生成するなどの理由で発生します。しかし、すべての固定幅を指定してこれらのすべての原因を排除し、 'Infinite'または '自動'を選択します。

数週間私の髪を引き出した後、簡単なことを試しました。私はGridViewのDatagridを切り替えました。そして私の驚きには、それは大きな遅れに悩まされることはなく、即座にペイントします。両方ともまったく同じプロパティとスタイリングを持っているので、私はなぜDatagridが非常に遅いのか理解しようとしています。

DataGridがGridViewより遅くなる理由はありますか?

答えて

0

プロパティ、イベント、およびメソッドの数を比較します。 DataGridには編集テンプレートがあります。 DataGridはより重い重量コントロールで、GridViewは高速化のために構築されました。

0

DataGridは常に遅くなりますが、EnableRow/ColumnVirtualizationプロパティをtrueに設定することでパフォーマンスを大幅に向上させることができます(これを実行しているかどうかは不明です)実行されるレイアウトの再計算が少なくなります。

からの提案here

関連する問題