【问题标题】:WPF Modular Initialization after Package Update包更新后的 WPF 模块初始化
【发布时间】:2020-03-10 11:42:06
【问题描述】:

嗨,希望你们能帮助我。 我继承了一个项目,需要更新包,并且初始化发生了变化。

 public abstract class ModuleBase : Prism.Modularity.IModule
{
    public IUnityContainer UnityContainer { get; private set; }
    public IRegionManager RegionManager { get; private set; }

    public ModuleBase(IUnityContainer unityContainer, IRegionManager regionManager)
    {
        if (unityContainer == null)
        {
            throw new ArgumentNullException("unityContainer");
        }
        UnityContainer = unityContainer;

        if (regionManager == null)
        {
            throw new ArgumentNullException("regionManager");
        }
        RegionManager = regionManager;
    }

    public virtual void Initialize() { }//old

    public abstract void RegisterTypes(IContainerRegistry containerRegistry);//new
    public abstract void OnInitialized(IContainerProvider containerProvider);//new
}

我有这个基础,从那里扩展的是不同的模块。

    public class UserModule : ModuleBase
{

    public UserModule(IUnityContainer unityContainer, IRegionManager regionManager)
        : base(unityContainer, regionManager)
    {

    }

    public override void Initialize()//old
    {
        UnityContainer.RegisterType<UserView>();
        UnityContainer.RegisterType<UserKernelSettingsView>();
        UnityContainer.RegisterType<UserNavigationItemView>();

        UnityContainer.RegisterTypeForNavigation<UserView>();
        UnityContainer.RegisterTypeForNavigation<UserKernelSettingsView>();

        RegionManager.RegisterViewWithRegion(RegionNames.NavigationRegion, typeof(UserNavigationItemView));
    }

    public override void OnInitialized(IContainerProvider containerProvider)//new
    {

    }

    public override void RegisterTypes(IContainerRegistry containerRegistry)//new
    {


    }
}

但现在我无法正确注册视图。

BR 最大值

【问题讨论】:

    标签: c# wpf prism modularity


    【解决方案1】:

    试试这个:

    public void OnInitialized(IContainerProvider containerProvider)
    {
        var regionManager = containerProvider.Resolve<IRegionManager>();
        regionManager.RegisterViewWithRegion(RegionNames.NavigationRegion, typeof(UserNavigationItemView));
    }
    
    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.Register<UserView>();
        containerRegistry.Register<UserKernelSettingsView>();
        containerRegistry.Register<UserNavigationItemView>();
    
        containerRegistry.RegisterForNavigation<UserView>();
        containerRegistry.RegisterForNavigation<UserKernelSettingsView>();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 2012-07-12
      • 2020-08-06
      相关资源
      最近更新 更多