实现MVVM Light toolkit WPF Unity

实现MVVM Light toolkit WPF Unity,wpf,unity-container,mvvm-light,Wpf,Unity Container,Mvvm Light,我正在为我的WPF应用程序使用MVVMLight工具包。 现在我正在浏览Lauren的MIX 10的演示样本。 示例代码在SL中,并使用UnityContainer。 MVVMLight toolkit为WPF提供的模板没有使用unitycontainer概念。如何在WPF中使用UnityContainer 我现在不知道我的问题是否有道理。我没有看到任何关于如何使用ViewModelLocator的文档。也许有人可以提供Lauren在MIX中使用的示例或WPF版本的演示,我建议使用托管可扩展性框

我正在为我的WPF应用程序使用MVVMLight工具包。 现在我正在浏览Lauren的MIX 10的演示样本。 示例代码在SL中,并使用UnityContainer。 MVVMLight toolkit为WPF提供的模板没有使用unitycontainer概念。如何在WPF中使用UnityContainer


我现在不知道我的问题是否有道理。我没有看到任何关于如何使用ViewModelLocator的文档。也许有人可以提供Lauren在MIX中使用的示例或WPF版本的演示,我建议使用托管可扩展性框架。在.NET4中,我从unity切换到了MEF。当你的应用程序不断增长时,我的工作非常出色。你可以通过谷歌搜索找到很多关于它的信息。
祝你好运

我在WPF(MVVM灯光)上使用Unity的方式如下:

我在应用程序根目录上创建了一个引导程序类,类似于:

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

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

        ConfigureContainer();
    }

    private void ConfigureContainer()
    {
        Container.RegisterType<IMyRepo, MyRepo>();
        Container.RegisterType<MainViewModel>();
    }
}
公共类引导程序
{
公共IUnityContainer容器{get;set;}
公共引导程序()
{
容器=新的UnityContainer();
配置容器();
}
私有void配置容器()
{
Container.RegisterType();
Container.RegisterType();
}
}
这是我的引导者。我也注册了ViewModels,因为在定位器中创建它们很容易

接下来,我在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
{
专用静态引导程序_引导程序;
静态ViewModelLocator()
{
if(_bootStrapper==null)
_引导程序=新引导程序();
}
公共主视图模型主视图
{
获取{return _bootStrapper.Container.Resolve();}
}
}
如您所见,我的ViewModelLocator很简单,它只需创建引导程序并解析ViewModel,这些VM也将通过容器解析它们的依赖关系:)


也许有一个最好的方法来归档它,但这确实是一个好的开始。

这确实是一个问题,因为MEF只为.NET 4发布。我想您使用的源代码来自?里面有一个很好的样本。我建议你去看看。如果有什么不清楚的地方,请再发一条评论,我会查出来的!我正在跟踪这个样本。因此,当我使用模板创建一个新项目并遵循Demo-2时,我遇到了问题。因为演示是针对SL的,而我正在制作WPF应用程序,而UnityCOntainer不适用于WPF:(