我对OnNavigatedTo
界面中的INavigationAware
方法有点问题。
当我用RegionManager.RequestNavigate(myRegionName, myViewName)
显示我的观点时,
调用OnNavigationTo
方法。
但是当我使用RegionManager.RegisterViewWithRegion(myRegionName, typeof(myView))
时
我无法得到这种情况,之后,我打电话
RegionManager.RequestNavigate(myRegionName, myViewName2)
在我的第二个视图中,我正在调用第一个视图的OnNavigatedFrom方法。
我的问题是:
当我使用OnNavigatedTo
时,为什么RegisterViewWithRegion
方法未被调用以及如何通知视图?
答案 0 :(得分:2)
使用区域管理器注册将显示向其注册的第一个视图。它永远不会调用OnNavigatedTo。基本上,为了让它做你想做的事情,你需要“导航”到第一个View,而不需要调用OnNavigatedFrom。要做到这一点:
// Register all your views into the region
// The first View that is registered is automatically activated
regionManager.Regions["myRegionName"].Add(myView);
regionManager.Regions["myRegionName"].Add(myView2);
// Deactivate the View so it doesn't show in the UI
regionManager.Regions["myRegionName"].Deactivate(regionManager.Regions["myRegionName"].ActiveViews.First());
// Now navigate to your first screen
regionManager.RequestNavigate("myRegionName", "myView");
OnNavigatedTo应该被调用一次,OnNavigatedFrom只能在请求导航到另一个View之后被调用。
答案 1 :(得分:0)
要允许视图导航,您必须将其注册为对象,请尝试以下操作:
_container.RegisterType<Object, MainView>("MainView", new TransientLifetimeManager());
_regionManager.RegisterViewWithRegion("MainRegion", () => _container.Resolve<MainView>());
第一行允许您查看导航,而第二行将在创建区域时自动解析视图