棱镜请求导航到新视图

时间:2016-08-18 17:25:23

标签: c# wpf prism

我正在WPF Prism 6使用autofac,并且在视图之间导航时遇到问题。我所拥有的是一种观点,我只想在离开之前保持活力,下次我导航到它时,我想创建一个新版本的视图。

在加载时,我会注册具有以下代码的IModule

_regionManager.RegisterViewWithRegion(RegionNames.MainRegion, 
                                      typeof(DxfDisplay.Views.DxfDisplay));

这会注册我的视图,系统在初始加载时工作,我在视图模型上实现INavigationAwareIRegionMemberLifetime接口,并public bool KeepAlive => false;实现IRegionMemberLifetime,以便我完成后,我的观点就被处理了。

当我离开此视图时,一切都很好,但当我尝试导航到使用

导航到视图时
_regionManager.RequestNavigate(RegionNames.MainRegion, 
                               new Uri("DxfDisplay", UriKind.Relative), parameters);

未打开视图,并且未调用视图模型构造函数。为了使导航正常工作,我需要再次注册该区域的视图。或者,如果我将KeepAlive更改为true,我可以导航回原始视图,但如果INavigationAware.IsNavigationTarget返回false,则无法生成新视图。

我的问题是如何向区域管理器注册视图,以便在我调用_regionManager.RequestNavigate时,它将创建视图的新实例并显示它。我觉得我错过了一些简单的东西,只是忽略它。

1 个答案:

答案 0 :(得分:3)

_builder.RegisterTypeForNavigation<DxfDisplay.Views.DxfDisplay>();