У меня есть много кода, который использует ViewModelLocator для установки datacontext в представлениях.MVVM ViewModelLocator с Ninject
В настоящее время я использую простой сервисный локатор (Simple Injector/CuttingEdge.ServiceLocation), так что ViewModelLocator с конструктором без параметров может быть создан из XAML в Window или UserControl.Resources, а затем используется для установки DataContext.
Я в процессе перехода к использованию Ninject и думал, что смогу продолжать использовать ViewModelLocator таким же образом. Однако теперь я обнаружил, что Ninject не поддерживает прямую поддержку местоположения службы (and it appears that service location is a concept that has fallen out of favor).
Я хотел бы продолжить определение вида viewmodel из XAML (используя производный класс ViewModelLocator), но я не могу найти аккуратное выполнение этого с помощью Ninject.
Я не могу найти способ сделать это. Как другие разработчики делают это без контейнера IoC, который поддерживает IServiceLocator (или аналогичный)?
Примечания:
- только MVVM библиотека Я использую MvvmFoundation.Wpf Джоша Смита.
- Я видел сообщение в блоге Use Ninject to decouple discovery of your viewmodel's in mvvmlight's viewmodellocator, но этот метод кажется неправильным.
Вы видели этот проект NuGet? Я не пробовал, но он утверждает, что разрешает ServiceLocation с Ninject. http://www.nuget.org/packages/Web.ServiceLocator.Ninject/ – McGarnagle
@McGarnagle - Да, спасибо, я это видел, но я надеялся найти решение, которое не включало servicelocator. – grantnz