メモリ フットプリントを削減し、コントロールの反応を高めることは常に重要です。これは、小さいデータセットへのバインディングなど「ストレスの少ない」状況と非常に多数のレコードと多くの列を持つレコードの両方またはいずれか一方を含むデータソースへのバインディングに関わる厳しいシナリオの両方に当てはまります。DataPresenter コントロールは、これらのシナリオでパフォーマンスを改善するために複数の技術を使用しています。これらの技術は以下のとおりです。
Note
|
注: 上記のレコードの仮想化と異なり、セルの仮想化方式は、スクロールされて表示されなくなった時 (つまり、例でユーザーが左にスクロールして戻る時) に CellValuePresenters をクリーンアップしません。その代わりに、それらを含む RecordPresenters がスクロールされて表示されなくなる (つまり、例ではユーザーが垂直にスクロールする) まで (その時にクリーンアップされますが)、CellValuePresenters は "hydrated" なままです。
|
Note
|
注: この再利用方式のプラスの影響は、FieldLayout の LabelLocation プロパティが InCells に設定される時に最も大きいです。この設定は、各セルにフィールド ラベルを持っているため、多数の要素を作成します (すべてのレコードの上に単一のヘッダー セットを作成する SeparateHeader 設定とは反対)。
|
-
コントロールに主要なスタイリング ポイントのスタイル情報をキャッシュすることで、Windows® Presentation Foundation スタイルの解決のオーバーヘッドを削減。
-
ScrollTips の方式で遅延したスクローリングを実装することによって、つまみのドラッグのスクロールに対するパフォーマンスの影響を回避する。
-
DataRecord オブジェクトと Cell オブジェクトの遅延作成によって、コントロールのメモリ フットプリントを削減。
-
自動アクティブ化ロジックの抑制
以下のリストは、パフォーマンスを最適化する一組の方法を説明します。
-
Settings.Width プロパティを以下に設定するフィールド数を制限します。
ただし、Settings.Width プロパティを上記の auto のひとつに設定したフィールドの場合、再利用しないでください。AllowCellVirtualization プロパティを False に設定することで、これを行うことができます。最高のパフォーマンスのために、Field の Width プロパティの設定を解除してください。
-
データ履歴を保持する Fields に関連付けられたオーバーヘッドがあります。データ履歴を保持する Fields の量を制限するために Field の DataValueChangeHistoryLimit を 1 以上に設定しないでください。