Модульная инициализация WPF после обновления пакета - PullRequest
1 голос
/ 10 марта 2020

Привет, надеюсь, вы, ребята, можете мне помочь. Я унаследовал проект, и мне нужно было обновить пакеты, и в инициализации произошли изменения.

 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
}

У меня есть эта база, и оттуда Extended - это разные модули.

    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 MAX

1 Ответ

1 голос
/ 10 марта 2020

Попробуйте это:

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>();
}
...