Prism RequestNavigate 在启动时立即从 PrismApplication 导航

Prism RequestNavigate from PrismApplication immediately on start

Prism 7 中,我可以从 IModule RegisterForNavigationRequestNavigate 像这样:

public class ModuleAModule : IModule
{
    public void OnInitialized(IContainerProvider containerProvider)
    {
        var regionManager = containerProvider.Resolve<IRegionManager>();
        regionManager.RequestNavigate("ContentRegion", "PersonList");
    }

    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterForNavigation<PersonList>();
    }
}

我知道我可以从 PrismApplication RegisterForNavigation 像这样:

public partial class App : PrismApplication
{
    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterForNavigation<ViewA>();
    }
}

但是我怎样才能 RequestNavigatePrismApplication 立即开始呢?

我试过这个:

public class MainWindowViewModel : BindableBase
{
    public MainWindowViewModel(IRegionManager regionManager)
    {
        regionManager.RequestNavigate("ContentRegion", "ViewA");
    }
}

但是 this.regions.CountRegionManager 中是 0 来自 Prism

private IRegion GetRegionByName(string regionName)
{
    return this.regions.FirstOrDefault(r => r.Name == regionName);
}

"ContentRegion" 肯定存在,因为如果我从 IModule 尝试并且我知道 PrismApplicationRegisterTypesMainWindowViewModel 构造函数之前执行,它就可以工作.

我不知道我错过了什么,我在任何示例或教程中都找不到答案。

感谢您的帮助!

您最好的选择是在您的应用程序中覆盖 OnInitialized 并在那里进行导航。您可以通过 Container 属性.

访问容器以获取区域管理器

如果您使用引导程序,您可以覆盖 InitializeModules 并导航到那里。