我正在使用IRegionManager
加载和导航到视图,我在主视图中将内容加载到主区域没有问题,主视图是用我的引导程序类加载的,但我无法将内容加载到加载的视图中的区域,区域管理器似乎没有注册这些区域。
我的引导类:
protected override DependencyObject CreateShell()
{
return this.Container.Resolve<MainWindowView>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override void ConfigureContainer()
{
base.ConfigureContainer();
this.Container.RegisterTypeForNavigation<DocumentView>();
this.Container.RegisterTypeForNavigation<EmailView>();
this.Container.RegisterTypeForNavigation<WorkTypeSelectionView>();
}
DocumentView
是另一个区域的用户控制,当命令被触发时运行的方法是:
private void ViewEmailAction()
{
NavigationParameters parameters;
parameters = new NavigationParameters();
parameters.Add(nameof(this.CurrentEmail), this.CurrentEmail);
this.regionManager.Regions[this.EmailRegion].RequestNavigate(nameof(EmailView), parameters);
}
这会引发消息"The region manager does not contain the EmailRegion region."
异常
提前感谢!
这里有两件不同的事情:
用户控制:这应该不涉及任何问题。很可能您正试图导航到尚未加载的视图中定义的区域。请确保在加载区域后导航到该区域。在ViewModel构造函数内部导航是这个问题的最大来源之一。如果你想把你的样本发布到GitHub,我可以看看。
控制模板:这是《棱镜》中的一个已知问题。这是你的解决方案:
http://southworks.com/blog/2011/11/10/regions-inside-datatemplates-in-prism-v4-using-a-region-behavior/