我正在开发基于Microsoft Prism框架的WPF应用程序。该应用程序的一个方面使用ItemsControl
区域。我可以通过ItemsControl
向RequestNavigate
添加视图,以查看该地区的视图。但是,我没有看到从该区域RequestNavigate
远离的方法,即,以便从该区域中删除视图,并在视图的ViewModel中触发“OnNavigatedFrom”回调。
我看到从ItemsControl
区域删除视图的唯一方法是手动删除区域中的视图,如下所示:
IRegion myRegion = _regionManager.Regions["MyRegion"];
myRegion.Remove(viewToRemove);
不幸的是,这对我不起作用,因为我需要在向区域添加/删除视图时触发OnNavigatedTo
和OnNavigatedFrom
回调。
我错过了什么吗?有没有办法从区域RequestNavigate
查看远离?
答案 0 :(得分:0)
根据我的理解,如果您不想导航到特定的 View ,则无需执行 OnNavigatedTo / From 方法。
无论如何,如果您需要在从 ItemsControl View 之前执行 OnNavigatedFrom() 实现>,您可以在手动删除查看之前手动调用它。
如果您不需要它,可以将null传递给 NavigationContext 参数,我相信您不需要它,否则您可以手动创建它。解决方案如下:
INavigationAware viewModel = viewToRemove.DataContext;
viewModel.OnNavigatedFrom(null);
IRegion myRegion = _regionManager.Regions["MyRegion"];
myRegion.Remove(viewToRemove);
我希望这对你有所帮助。