Prism RequestNavigate 在启动时立即从 PrismApplication 导航
Prism RequestNavigate from PrismApplication immediately on start
在 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>();
}
}
但是我怎样才能 RequestNavigate
从 PrismApplication
立即开始呢?
我试过这个:
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
构造函数之前执行,它就可以工作.
我不知道我错过了什么,我在任何示例或教程中都找不到答案。
感谢您的帮助!
您最好的选择是在您的应用程序中覆盖 OnInitialized
并在那里进行导航。您可以通过 Container
属性.
访问容器以获取区域管理器
如果您使用引导程序,您可以覆盖 InitializeModules
并导航到那里。
在 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>();
}
}
但是我怎样才能 RequestNavigate
从 PrismApplication
立即开始呢?
我试过这个:
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
构造函数之前执行,它就可以工作.
我不知道我错过了什么,我在任何示例或教程中都找不到答案。
感谢您的帮助!
您最好的选择是在您的应用程序中覆盖 OnInitialized
并在那里进行导航。您可以通过 Container
属性.
如果您使用引导程序,您可以覆盖 InitializeModules
并导航到那里。