当我做 MVVM 应用程序时,我通常有一个与服务定位器模式配合使用的中央 ViewModel 定位器。这允许我通过 Ninject 向 ViewModel 注入服务
我的 ViewModel 定位器通常如下所示:
public class ViewModelLocator
{
private static IKernel kernel;
public ViewModelLocator()
{
if (kernel == null)
{
kernel = new StandardKernel(new ConfigModule());
}
}
public static T Get<T>()
{
return kernel.Get<T>();
}
public static ProductViewModel ProductViewModel{
get { return kernel.Get<ProductViewModel>(); }
}
public UserViewModel UserViewModel {
get { return kernel.Get<UserViewModel>();}
}
}
public class ConfigModule : NinjectModule
{
public override void Load()
{
Bind<ProductViewModel>().ToSelf();
Bind<UserViewModel>().ToSelf();
}
}
现在我正在考虑添加另一个名为“订单”的模块。所以我会有一个 OrderViewModel(或者在现实生活中的几个)。我想让它们通过 MEF 分离和导入。
我如何扩展/更改这种方法以能够使用中心视图模型定位器和导入的视图模型和视图。
是的,我知道 Prism 和 Caliburn,但看到这种方法对我来说会很有趣......
谢谢你的帮助....