我正在使用带有autofac的WPF Prism 6,并且在视图之间导航时遇到了问题。我拥有一个视图,只想在离开它之前保持其活动状态,下次导航到它时,我想创建此视图的新版本。
加载时,我注册了一个IModule,其中包含以下代码:
视图未打开,且视图模型构造函数未被调用。为了正确实现导航,我需要重新向区域注册视图。或者,如果我将 KeepAlive 更改为
我的问题是,如何以这样的方式向区域管理器注册视图,以便在调用
加载时,我注册了一个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
时,它将创建视图的一个新实例并显示它。我觉得我可能错过了一些简单的东西,只是忽略了它。