PrismRequest在启动后立即从PrismApplication导航

时间:2018-10-26 09:36:36

标签: c# wpf mvvm prism

Prism 7 中,我可以RegisterForNavigationRequestNavigate的{​​{1}}像这样:

IModule

我知道我可以像这样从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>(); } } RegisterForNavigation

PrismApplication

但是如何立即从public partial class App : PrismApplication { protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterForNavigation<ViewA>(); } } RequestNavigate PrismApplication开始?

我已经尝试过了:

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

this.regions.CountRegionManagerPrism的值为0

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

"ContentRegion"确实存在,因为如果我从IModule尝试,并且知道RegisterTypes的{​​{1}}在PrismApplication构造函数之前执行,它就可以工作。 / p>

我不知道自己缺少什么,在任何示例或教程中也找不到答案。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您最好的选择是在应用程序中覆盖OnInitialized并在其中进行导航。您可以通过Container属性访问该容器以获取区域管理器。

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