在 Prism 7 中,我可以RegisterForNavigation
和RequestNavigate
的{{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.Count
中RegionManager
中Prism
的值为0
private IRegion GetRegionByName(string regionName)
{
return this.regions.FirstOrDefault(r => r.Name == regionName);
}
"ContentRegion"
确实存在,因为如果我从IModule
尝试,并且知道RegisterTypes
的{{1}}在PrismApplication
构造函数之前执行,它就可以工作。 / p>
我不知道自己缺少什么,在任何示例或教程中也找不到答案。
谢谢您的帮助!
答案 0 :(得分:2)
您最好的选择是在应用程序中覆盖OnInitialized
并在其中进行导航。您可以通过Container
属性访问该容器以获取区域管理器。
如果您使用引导程序,则可以覆盖InitializeModules
并在那里导航。