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