gpt4 book ai didi

wpf - ViewModel 定位器如何在模块化系统中工作

转载 作者:行者123 更新时间:2023-12-03 10:50:14 25 4
gpt4 key购买 nike

当我做 MVVM 应用程序时,我通常有一个与服务定位器模式配合使用的中央 ViewModel 定位器。这允许我通过 Ninject 向 ViewModel 注入(inject)服务

我的 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 分离和导入。

我如何扩展/更改这种方法以能够使用中心 View 模型定位器和导入的 View 模型和 View 。

是的,我知道 Prism 和 Caliburn,但看到这种方法对我来说会很有趣......

谢谢你的帮助....

最佳答案

看看 MVVM Light 示例(特别是 ViewModelLocator ),这是该模式的一个很好的示例。

注意:你不需要使用 MVVM Light 框架来应用这个模式——你真正在看它的架构。该框架只是让它变得更容易! FWIW,我确实建议您使用框架... :)

关于wpf - ViewModel 定位器如何在模块化系统中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com