【发布时间】:2018-10-26 09:36:35
【问题描述】:
在Prism 7中,我可以像这样从IModule 中RegisterForNavigation 和RequestNavigate:
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>();
}
}
但是我怎样才能在开始时立即从PrismApplication RequestNavigate?
我试过这个:
public class MainWindowViewModel : BindableBase
{
public MainWindowViewModel(IRegionManager regionManager)
{
regionManager.RequestNavigate("ContentRegion", "ViewA");
}
}
但this.regions.Count 在RegionManager 中为0,来自Prism
private IRegion GetRegionByName(string regionName)
{
return this.regions.FirstOrDefault(r => r.Name == regionName);
}
"ContentRegion" 肯定存在,因为如果我从IModule 尝试它会起作用,而且我知道PrismApplication 中的RegisterTypes 在MainWindowViewModel 构造函数之前执行。
我不知道自己错过了什么,也无法在任何示例或教程中找到答案。
感谢您的帮助!
【问题讨论】: