Я новичок в MVVM, поэтому, пожалуйста, извините, если у этой проблемы есть хорошо известное решение .
Мы создаем группу классов моделей, у которых есть некоторые основные свойства, которые загружаются заранее, а также некоторые дополнительные свойства, которые могут быть загружены лениво по запросу путем вызова веб-API (обновление: для уточнения, это был бы вызов веб-API для каждого свойства с отложенной загрузкой).
Вместо того, чтобы иметь несколько моделей, кажется разумным иметь одну модель с логикой отложенной загрузки. Однако также кажется, что свойства с отложенной загрузкой не должны блокироваться при доступе, поэтому, когда View привязывается к ViewModel и он привязывается к Model, мы не блокируем поток пользовательского интерфейса.
Таким образом, я был думая о шаблоне, что-то вроде того, что при доступе к ленивому свойству в Модели он начинает асинхронную выборку и затем немедленно возвращает значение по умолчанию (например, null
). Когда асинхронная выборка завершена,он вызовет событие PropertyChanged
, чтобы ViewModel / View могли повторно привязать к полученному значению.
Я пробовал это, и, похоже, он работает довольно хорошо, но мне было интересно: