当前位置:  开发笔记 > 编程语言 > 正文

Prism 2.1将模块注入ViewModel

如何解决《Prism2.1将模块注入ViewModel》经验,为你挑选了0个好方法。

我一直在尝试将ModuleCatalog中的模块注入我的Shell的ViewModel,但我运气不好......

我正在我的Bootstrapper中创建ModuleCatalog,我的模块从其Initializer进入屏幕没有问题.但是,我希望能够将我的模块列表绑定到一个带有DataTemplate的容器,从而允许它们从菜单中启动!

这是我的Boostrapper文件,随着时间的推移,我将添加更多模块,但就目前而言,它只包含了我设计的"ProductAModule":

public class Bootstrapper : UnityBootstrapper
{
    protected override void ConfigureContainer()
    {
        Container.RegisterType();

        base.ConfigureContainer();
    }

    protected override IModuleCatalog GetModuleCatalog()
    {
        return new ModuleCatalog()
            .AddModule(typeof(ProductAModule));
    }

    protected override DependencyObject CreateShell()
    {
        var view = Container.Resolve();
        var viewModel = Container.Resolve();
        view.DataContext = viewModel;
        view.Show();

        return view;
    }
}

接下来,这是我的Shell的ViewModel:

public class ShellViewModel : ViewModelBase
{
    public List Modules { get; set; }

    public ShellViewModel(List modules)
    {
        modules.Sort((a, b) => a.Name.CompareTo(b));
        Modules = modules;
    }
}

正如您所看到的,我正在尝试注入一个IProductModule列表(ProductAModule继承了它的一些属性和方法),以便它可以绑定到我的Shell的View.是否有一些非常简单的我缺少或者不能使用Unity IoC?(我已经看到它完成了StructureMap对Prism的扩展)

还有一件事......当运行应用程序时,在Bootstrapper中的Container正在解析ShellViewModel时,我收到以下异常:

依赖项的解析失败,type ="PrismBasic.Shell.ViewModels.ShellViewModel",name ="".异常消息是:当前构建操作(构建密钥构建密钥[PrismBasic.Shell.ViewModels.ShellViewModel,null])失败:尝试调用构造函数PrismBasic.Shell.ViewModels.ShellViewModel(System.Collections)时无法解析参数模块.Generic.List`1 [[PrismBasic.ModuleBase.IProductModule,PrismBasic.ModuleBase,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]] modules).(策略类型BuildPlanStrategy,索引3)

无论如何,简单吧......看起来很困惑......

任何帮助将不胜感激!

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有