прямо сейчас Я использую MVVM Light для создания шаблона MVVM. Поэтому, на мой взгляд, я создаю несколько вкладок и привязываю их к нескольким экземплярам одного ViewModel. Я достигнуть этого с:MVVM Light создает несколько экземпляров DataService
ServiceLocator.Current.GetInstance<ViewModel>(key);
Когда я делаю это, каждый экземпляр ViewModel подключен к тому же один экземпляр DataService зарегистрирован в ViewModelLocator:
SimpleIoc.Default.Register<IDataService, DataService>();
Но я хочу, чтобы иметь для каждого экземпляра Viewmodel также один экземпляр Dataservice. Зачем? Поскольку каждый экземпляр ViewModel имеет ту же функцию, но требует других данных.
Как создать в MVVM Lights ViewModelLocator новый экземпляр DataService, когда для нового экземпляра ViewModel? Является ли это возможным или не является хорошим подходом к шаблону MVVM, и я неправильно понял DataService?
Спасибо за ваш ответ, но это не работает для меня. Конструктор класса DataService вызывается только один раз. Вызов метода Register вне статического конструктора ViewModelLocator вызывает исключение System.InvalidOperationException. –
@SebastianRichter, пожалуйста, уточните мое обновление –
Спасибо за подсказку с Autofac. Слишком плохо, что он не работает в MVVM Light. –