Практический пример использования Castle.Windsor с MVVMLight Toolkit

#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