我应该创建什么而不是Bootstrapper?棱镜6.1.0

时间:2015-11-11 11:05:43

标签: c# wpf xaml mvvm prism

我尝试将我的应用程序从Prism v4.0更新到Prism v6.1.0并运行包管理器: PM> Install-Package Prism.Core

并且PM安装了这样的包:

  • Microsoft.Practices.Prism.Composition.dll
  • Microsoft.Practices.Prism.Interactivity.dll
  • Microsoft.Practices.Prism.Mvvm.dll
  • Microsoft.Practices.Prism.Mvvm.Desktop.dll
  • Microsoft.Practices.Prism.PubSubEvents.dll
  • Microsoft.Practices.Prism.SharedInterfaces.dll
  • Microsoft.Practices.ServiceLocation.dll

下一步我尝试创建bootstrapper:

public class Bootstrapper : UnityBootstrapper
{
    protected override DependencyObject CreateShell()
    {
        return Container.Resolve<Shell>();
    }
    protected override void InitializeShell()
    {
        base.InitializeShell();
        App.Current.MainWindow = (Window)Shell;
        App.Current.MainWindow.Show();
    }
    protected override void ConfigureContainer()
    {
        base.ConfigureContainer();
        Container.RegisterType<IShellViewModel, ShellViewModel>();
    }     
    protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
    {
        RegionAdapterMappings mappings = base.ConfigureRegionAdapterMappings();
        mappings.RegisterMapping(typeof(StackPanel), Container.Resolve<StackPanelRegionAdapter>());
        return mappings;
    } 
    protected override IModuleCatalog CreateModuleCatalog()
    {
        ModuleCatalog catalog = new ModuleCatalog();            
        catalog.AddModule(typeof(ModuleBModule));
        return catalog;
    }
}

我尝试解决UnityBootstrapper问题。然而,在Prism 6.1.0中没有这样的课程。 所以我试图通过Nuget安装:

Prism.UnityExtesions

然而NuGet说:This package is no longer supported. Please use the new Prism.Unity package

Prism 5.0有一个bootstrapper类。但是现在不支持Prism 5.0。例如,在此示例中,来自code.msdn的HelloWorld

所以我想到的问题是:如何在Prism 6.1.0上创建bootstrapper?

1 个答案:

答案 0 :(得分:18)

如@toumir的评论中所述,首先卸载所有Microsoft.Practices.*个软件包(检查您的packages.config以确保它们全部已卸载)。

由于您尝试使用Unity with Prism 6,因此您必须安装的包是Prism.Unity。这将自动引入所需的所有其他包:

  • 统一
  • CommonServiceLocator
  • Prism.Wpf
    • Prism.Core

这是一个很好的做法,只添加最具体的包,就像新的项目文件(.NET Core,ASP.NET 5,Win10 UWP)一样,旧的packages.config文件被project.json替换。文件和NuGet v3将负责better dependency resolving。截至今天,它尚未用于WPF,但这不应该让你无法做到这一点&#34;对&#34;。

对于Prism 6上的新documentationsamples,请转到Prism GitHub存储库。