C# 请求将视图*导航到远离ItemsControl区域的位置

C# 请求将视图*导航到远离ItemsControl区域的位置,c#,wpf,prism,region,C#,Wpf,Prism,Region,我正在开发一个基于MicrosoftPrism框架的WPF应用程序。应用程序的一个方面使用ItemsControl区域。我可以通过请求将视图导航到区域来向ItemsControl添加视图。但是,我看不到从区域中导航的方法,即从区域中删除视图,并在视图的ViewModel中触发OnNavigatedFrom回调 我见过的从ItemsControl区域删除视图的唯一方法是手动从该区域删除视图,如下所示: IRegion myRegion = _regionManager.Regions["MyReg

我正在开发一个基于MicrosoftPrism框架的WPF应用程序。应用程序的一个方面使用ItemsControl区域。我可以通过请求将视图导航到区域来向ItemsControl添加视图。但是,我看不到从区域中导航的方法,即从区域中删除视图,并在视图的ViewModel中触发OnNavigatedFrom回调

我见过的从ItemsControl区域删除视图的唯一方法是手动从该区域删除视图,如下所示:

IRegion myRegion = _regionManager.Regions["MyRegion"];
myRegion.Remove(viewToRemove);
不幸的是,这对我不起作用,因为我需要在将视图添加到区域或从区域中删除视图时触发OnNavigatedTo和OnNavigatedFrom回调


我错过什么了吗?是否有一种方法可以将视图导航到远离某个区域的位置?

根据我的理解,如果不导航到特定视图,则不需要执行OnNavigatedTo/from方法

无论如何,如果您可能需要在从ItemsControl中删除视图之前执行OnNavigatedFrom实现,则可以在手动删除视图之前手动调用它

如果您不需要NavigationContext参数,可以将null传递给它,我相信您不需要,或者您可以手动创建它。解决办法如下:

INavigationAware viewModel = viewToRemove.DataContext;
viewModel.OnNavigatedFrom(null);
IRegion myRegion = _regionManager.Regions["MyRegion"];
myRegion.Remove(viewToRemove);

我希望这对您有所帮助。

如果您可以在某个地区导航,会发生什么?您希望该区域没有活动视图,还是希望上一个视图变为活动视图?主要问题是为什么不想导航到其他视图。问候。@GOstrowsky据我所知,该区域当前的所有视图都将其IsActive属性设置为true。因此,理想情况下,RequestNavigateFrom方法将从区域中删除视图,将IsActive设置为false,并启动OnNavigateFrom回调。此外,我不确定您不想导航其他视图的原因是什么。导航到ItemsControl区域中的另一个视图只是将视图添加到该区域中;它不会删除或替换现有的视图。谢谢,戈斯特罗夫斯基,这将引导我走向正确的方向。