我正在为我的WPF应用程序使用MVVMLight工具包。 现在我正在阅读Lauren的MIX 10的演示样本。 示例代码在SL中,并使用UnityContainer。 MVV MVight工具包为WPF提供的模板不使用unitycontainer概念。如何在WPF中使用UnityContainer。
如果我的问题有道理,我现在不行。我没有看到有关如何使用ViewModelLocator的任何文档。也许有人可以提供Lauren在MIX中使用的Demo样本或WPF版本
答案 0 :(得分:4)
我在WPF(MVVM Light)上使用Unity的方式是这样的:
我在应用程序根目录上创建了一个bootstrapper类,如:
public class Bootstrapper
{
public IUnityContainer Container { get; set; }
public Bootstrapper()
{
Container = new UnityContainer();
ConfigureContainer();
}
private void ConfigureContainer()
{
Container.RegisterType<IMyRepo, MyRepo>();
Container.RegisterType<MainViewModel>();
}
}
这是我的引导程序。我也注册了ViewModel,因为在Locator中很容易创建它们。
接下来,我在ViewModelLocator的构造函数上创建了boostrapper,我在这里解析了每个ViewModel,如:
public class ViewModelLocator
{
private static Bootstrapper _bootStrapper;
static ViewModelLocator()
{
if (_bootStrapper == null)
_bootStrapper = new Bootstrapper();
}
public MainViewModel Main
{
get { return _bootStrapper.Container.Resolve<MainViewModel>(); }
}
}
如您所见,我的ViewModelLocator很简单,只需创建引导程序并解析ViewModel,这些VM也将通过容器解析它们的依赖关系:)
也许有一种最好的方法来实现这一点,但这确实是一个好的开始。
答案 1 :(得分:1)
我建议使用Managed Extensibility Framework。它是在.NET 4中,我将自己从统一切换到MEF。当您的应用程序增长时,我工作得非常好。你可以通过谷歌搜索找到很多信息。 祝你好运!