Эта недостающая ссылка будет службой, на которую ссылается Prism .
Классы моделей обычно используются вместе со службой или хранилищем, которое инкапсулирует доступ к данным и кэширование.
В предыдущем вопросе вы заметите, что я использую службу в этой ViewModel.
public ScriptRepositoryViewModel(IUnityContainer container,
IScriptService scriptService, IEventAggregator eventAggregator)
{
_container = container;
_scriptService = scriptService;
_eventAggregator = eventAggregator;
}
public ICollectionView Scripts
{
get
{
if (_view == null)
{
_view = CollectionViewSource.GetDefaultView(
_scriptService.Scripts);
_view.Filter = Filter;
}
return _view;
}
}
Обратите внимание на IScriptService
впрыскивается в ScriptRepositoryViewModel
.Этот сервис на самом деле реализует кэширование и изменяющуюся логику, так что тот, кто опрашивает Scripts
, получит кэшированную копию или, возможно, новую копию;потребитель не должен заботиться.
В вашем случае, когда ваши две модели ViewModel нуждаются в одинаковых данных, вы можете следовать одному и тому же шаблону внедрения службы в каждую модель ViewModel.Когда ViewModel вызывает сервис для извлечения данных, вы можете реализовать логику, чтобы не извлекать данные из серверной части, если они не устарели в течение 10 минут или того поведения, которое вы пожелаете.Он был абстрагирован в тот момент, и вы можете делать то, что вам нужно;позволяя N ViewModels использовать данные из центрального расположения без ненужной загрузки.