我有很多代码使用 ViewModelLocator 在视图上设置数据上下文。
我目前正在使用一个简单的服务定位器(Simple Injector / CuttingEdge.ServiceLocation),以便可以从 Window 或 UserControl.Resources 中的 XAML 实例化具有无参数构造函数的 ViewModelLocator,然后用于设置 DataContext。
我正在改用 Ninject,并认为我可以继续以同样的方式使用 ViewModelLocator。但是,我现在发现 Ninject 并不直接支持服务定位(而且服务定位似乎是一个已经失宠的概念)。
我想继续从 XAML 指定视图视图模型(使用 ViewModelLocator 派生类),但我找不到使用 Ninject 执行此操作的整洁之处。
我找不到任何方法来做到这一点。如果没有支持 IServiceLocator(或类似)的 IoC 容器,其他开发人员如何做到这一点?
笔记:
- 我使用的唯一 MVVM 库是 Josh Smith 的 MvvmFoundation.Wpf。
- 我看过博文Use Ninject to decouple discovery of your viewmodel's in mvvmlight's viewmodellocator但这种方法似乎不正确。