2011-02-16 122 views
6

我正在为我的WPF应用程序使用MVVMLight工具包。 现在我正在通过Lauren's MIX 10的演示示例。 示例代码位于SL中,并且使用了UnityContainer。 MVVMLight工具包为WPF提供的模板不使用unitycontainer概念。我如何使用WPF中的UnityContainer。实现MVVM Light工具包WPF Unity

我现在不是现在如果我的问题甚至是有道理的。我没有看到有关如何使用ViewModelLocator的任何文档。也许有人可以提供一个样本或劳伦在MIX使用的演示WPF版本

回答

1

我会建议使用托管扩展框架。它在.NET 4中,我将自己从统一转换到MEF。当您的应用程序不断增长时,我的工作非常棒您可以通过使用谷歌搜索找到大量的信息。 祝你好运!

+0

但我正在使用.NET 3.5 :( – xaria 2011-02-17 03:32:13

4

我使用统一的WPF(MVVM光)的方法是这样的:

我的应用程序根目录创建一个引导程序类,是这样的:

public class Bootstrapper 
{ 
    public IUnityContainer Container { get; set; } 

    public Bootstrapper() 
    { 
     Container = new UnityContainer(); 

     ConfigureContainer(); 
    } 

    private void ConfigureContainer() 
    { 
     Container.RegisterType<IMyRepo, MyRepo>(); 
     Container.RegisterType<MainViewModel>(); 
    } 
} 

这是我的引导程序。我也注册了ViewModels,因为在Locator中很容易创建它们。

接下来,我创建了ViewModelLocator的构造函数中boostrapper,我在这里解决每一个视图模型,如:

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很简单,它只是创造引导程序和解决视图模型,并这些虚拟机将通过容器解决他们的依赖关系:)

也许有一个最佳的方式来实现这一点,但这确实是一个好的开始。

相关问题