Я создаю приложение wpf, используя MVVM.У меня есть viewModels, который использует ленивую загрузку, как показано ниже:
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; }
}
}
Представление имеет AssignmentViewModels в ListView и заметки в ListBox с табличкой данных.
Когда я отображаю одну из AssignmentViewModels160 элементов, для загрузки которых требуется 1000 мс.Я думал, что это из-за того, что свойство Notes извлекается из таблицы базы данных с 1,5 миллионами строк.Я проверил это, и потребовалось всего 60 мс, чтобы заполнить список заметок.Так что я предполагаю, что это привязка данных для загрузки 160 элементов в список.Но это не должно иметь место, потому что listBoxes виртуализируют свой контент (я отследил его и убедился, что элементы находятся в панели стека Virtualization).
Так что я в растерянности, я не знаю, как узнать, что занимает дополнительные 940 мс.
Что я могу сделать, чтобы отследить это?Производительность - это ключ, и я не знаю, как ее улучшить.