Неблокирующие свойства с отложенной загрузкой в ​​модели MVVM

Я новичок в MVVM, поэтому, пожалуйста, извините, если у этой проблемы есть хорошо известное решение .

Мы создаем группу классов моделей, у которых есть некоторые основные свойства, которые загружаются заранее, а также некоторые дополнительные свойства, которые могут быть загружены лениво по запросу путем вызова веб-API (обновление: для уточнения, это был бы вызов веб-API для каждого свойства с отложенной загрузкой).

Вместо того, чтобы иметь несколько моделей, кажется разумным иметь одну модель с логикой отложенной загрузки. Однако также кажется, что свойства с отложенной загрузкой не должны блокироваться при доступе, поэтому, когда View привязывается к ViewModel и он привязывается к Model, мы не блокируем поток пользовательского интерфейса.

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

Я пробовал это, и, похоже, он работает довольно хорошо, но мне было интересно:

  1. Есть ли в этом подходе подводные камни, о которых я еще не узнал, но которые будут встречаться по мере увеличения сложности приложения?
  2. Есть ли существующее решение этой проблемы, встроенное в структуру или широко распространенное. используется как часть стороннего фреймворка?
12
задан Greg Beech 29 June 2011 в 14:46
поделиться