我正在WPF Prism 6
使用autofac
,并且在视图之间导航时遇到问题。我所拥有的是一种观点,我只想在离开之前保持活力,下次我导航到它时,我想创建一个新版本的视图。
在加载时,我会注册具有以下代码的IModule
_regionManager.RegisterViewWithRegion(RegionNames.MainRegion,
typeof(DxfDisplay.Views.DxfDisplay));
这会注册我的视图,系统在初始加载时工作,我在视图模型上实现INavigationAware
和IRegionMemberLifetime
接口,并public bool KeepAlive => false;
实现IRegionMemberLifetime
,以便我完成后,我的观点就被处理了。
当我离开此视图时,一切都很好,但当我尝试导航到使用
导航到视图时_regionManager.RequestNavigate(RegionNames.MainRegion,
new Uri("DxfDisplay", UriKind.Relative), parameters);
未打开视图,并且未调用视图模型构造函数。为了使导航正常工作,我需要再次注册该区域的视图。或者,如果我将KeepAlive更改为true
,我可以导航回原始视图,但如果INavigationAware.IsNavigationTarget
返回false,则无法生成新视图。
我的问题是如何向区域管理器注册视图,以便在我调用_regionManager.RequestNavigate
时,它将创建视图的新实例并显示它。我觉得我错过了一些简单的东西,只是忽略它。
答案 0 :(得分:3)
_builder.RegisterTypeForNavigation<DxfDisplay.Views.DxfDisplay>();