Wpf Prism 7.1中的模块注册

Wpf Prism 7.1中的模块注册,wpf,prism,Wpf,Prism,在Prism 7.1中,IModule接口已从版本6.3更改,现在公开了两种方法RegisterTypes(IContainerRegistry containerRegistry)和OnInitialized(IContainerProvider containerProvider)。我请求原谅,但我无法理解如何注册模块中实现的视图。这可能太简单了,我看不出这个问题的解决办法。你能给我举个例子让我明白我该怎么做吗?无论我在哪里查找,我都只找到了关于6.3版的示例,我对此非常了解 这可能太简单了

在Prism 7.1中,IModule接口已从版本6.3更改,现在公开了两种方法RegisterTypes(IContainerRegistry containerRegistry)和OnInitialized(IContainerProvider containerProvider)。我请求原谅,但我无法理解如何注册模块中实现的视图。这可能太简单了,我看不出这个问题的解决办法。你能给我举个例子让我明白我该怎么做吗?无论我在哪里查找,我都只找到了关于6.3版的示例,我对此非常了解

这可能太简单了,我看不出这个问题的解决办法


只需使用
RegisterTypes
——注册视图就是注册类型。

Prism 7.X在DI容器周围引入了一个抽象。原因有很多,但最重要的两个是:

  • 社区向Prism团队提出的许多支持问题都围绕着如何使用与Prism团队无关的容器
  • 通过抽象容器,它使得共享代码和交换容器的场景变得更容易
  • 同样重要的是要理解,通过抽象容器,我们还对负责注册视图的容器扩展进行了更改。具体来说,我们现在在IContainerRegistry上有了它们。这里给出了Prism 6.X模块示例:

    public class ModuleA
    {
        private IUnityContainer _container { get; }
    
        public ModuleA(IUnityContainer container)
        {
            _container = container;
        }
    
        public void Initialize()
        {
            // register stuff
            _container.RegisterViewForNavigation<ViewA>();
    
            // Setup Event listeners etc...
            var ea = _container.Resolve<IEventAggregator>();
        }
    }
    
    公共类模块a
    {
    私有IUnityContainer_容器{get;}
    公共模块A(IUnityContainer容器)
    {
    _容器=容器;
    }
    公共无效初始化()
    {
    //登记资料
    _container.RegisterServiceWForNavigation();
    //设置事件侦听器等。。。
    var ea=_container.Resolve();
    }
    }
    
    我们会将此更新为:

    public class ModuleA
    {
        public void OnInitialized(IContainerProvider containerProvider)
        {
            // Setup Event listeners etc...
            var ea = containerProvider.Resolve<IEventAggregator>();
        }
    
        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
            // register stuff
            containerRegistry.RegisterForNavigation<ViewA>();
        }
    }
    
    公共类模块a
    {
    初始公共无效(IContainerProvider-containerProvider)
    {
    //设置事件侦听器等。。。
    var ea=containerProvider.Resolve();
    }
    公共无效注册表类型(IContainerRegistry containerRegistry)
    {
    //登记资料
    containerRegistry.RegisterForNavigation();
    }
    }