MVVMを使用してwpfアプリケーションを構築しています。WPFデータバインディングのパフォーマンス
public class AssignmentsViewModel
{
List<AssignmentViewModel> _Assignments;
public List<AssignmentViewModel> Assignments
{
get
{
if (_Assignments == null)
_Assignments = new List<AssignmentViewModel>(Data.GetAssignments());
return _Assignments;
}
set { _Assignments = value; }
}
}
public class AssignmentViewModel
{
List<NoteViewModel> _Notes;
public List<NoteViewModel> Notes
{
get
{
if (_Notes == null)
_Notes = new List<NoteViewModel>(Data.GetNotes());
return _Notes;
}
set { _Notes = value; }
}
}
ビューはDataTemplateを持つリストボックスにListViewコントロールでAssignmentViewModelsとノートを持っている:私は以下のようなのviewmodels採用遅延ロードを持っています。
160個のアイテムを持つAssignmentViewModelsのいずれかを表示すると、読み込むのに1000ミリ秒かかります。私はそれが150万行のデータベーステーブルから取得するNotesプロパティのためだと考えました。私はそれをチェックし、ノーツリストを埋めるために60ミリ秒かかりました。だから私はそれがリストボックスに160項目を読み込むのデータバインディングだと思います。しかし、それはそうであってはならない。なぜなら、listBoxesはそのコンテンツを仮想化するからだ(私はそれをスヌープし、アイテムがバーチャライズのスタックパネルにあることを確認した)。
私は紛失しています。余分な940ミリ秒をどのように取っているかを知る方法はわかりません。
これを追跡するにはどうすればよいですか?パフォーマンスが重要であり、改善方法はわかりません。
これらのパフォーマンスプロファイリングリンクをありがとうございました。私は今それらを使う方法を学ぶ必要があります。 :) – Jose