#mvvm-light
#mvvm-light
Вопрос:
Я действительно пытался, но не могу найти хороший рабочий пример использования Castle IOC с MVVMLight. Были бы оценены любые рекомендации по способу динамической генерации ViewModelBase viewmodels. Я пытаюсь использовать внедрение конструктора, чтобы связать viewmodel с источником данных, что-то вроде:
public class MainViewModel : ViewModelBase
{
...
public MainViewModel( ISomeSortofDataRepsoitory mysomesortofdata)
myrepo = mysomesortofdata; /// data items in an observable collection
}
и я хочу, ViewModelLocator
чтобы сделать что-то вроде:
public static void CreateMain()
{
if (_main == null)
{
...
_main = ioc.Resolve<MainViewModel>();
...
}
}
увы, кубиков нет. Есть рабочие примеры?
Комментарии:
1. Хорошо, я использую этот рабочий вид, но он не поддается смешиванию. Он генерирует viewmodel из контейнера и надлежащим образом вводит хранилище данных по желанию, но сам контейнер не создается в режиме разработки, поэтому нет данных для просмотра. Должен ли я создавать фиктивную viewmodel только для компоновки формы?
2. Можете ли вы предоставить некоторые подробности о том, что вы сделали? Я также играю с Windsor с MVVMLight и просто совсем этого не понимаю: (
Ответ №1:
Вам необходимо установить CommonServiceLocator.пакет WindsorAdapter от NuGet. Затем в вашем ViewModelLocator ctor
var container = new WindsorContainer();
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));
или
Полностью удалите класс ViewModelLocator и поместите всю вашу конфигурацию Castle Windsor в
override void OnStartup(StartupEventArgs e)
в App.xaml.cs