我试图了解Prism Xamarin导航以及如何与xamarin本身相关
有人可以纠正我错在哪里吗?
Xamarin Prism
Navigation.PopAsync = NavigationService.NavigateAsync(uri,
useModalNavigation: true)
= NavigationService.GoBackAsync
Navigation.PushAsync = NavigationService.NavigateAsync(uri,
useModalNavigation: false)
也在棱镜中
Is NavigationService.NavigateAsync(uri,useModalNavigation: false)
与
相同NavigationService.GoBackAsync
他们都在做同样的事情吗?
OnNavigatingTo(NavigationParameters参数)vs OnNavigatedTo(NavigationParameters参数)
它们都在构造函数被触发后被触发。 任何实际例子何时使用一个以及何时使用另一个?
你在那里放置了什么样的逻辑。当你想要加载表单时,他们使用了什么?通常你在那里进行什么样的验证?为什么?
public void OnNavigatedTo(NavigationParameters parameters)
{
if(parameters.GetValue<NavigationMode>(KnownNavigationParameters.NavigationMode) == NavigationMode.Back)
{
}
//or logic like
if ( parameters.ContainsKey("myId") )
{
}
}
为什么我会使用parameters.ContainsKey(“myId”)或navigationMode检查。
我只是想了解应该如何使用OnNavigatedTo / OnNavigatingTo。 如果有人能用几句话说出一个场景,我会理解如何使用这些方法。
非常感谢提前
答案 0 :(得分:1)
由于Prism的附加功能(参数,深度导航等),但是简单来说,这些调用并不完全可比;
Xamarin Prism
Navigation.PopAsync = NavigationService.GoBackAsync
Navigation.PushAsync = NavigationService.NavigateAsync(uri, useModalNavigation: false)
Navigation.PushModalAsync = NavigationService.NavigateAsync(uri, useModalNavigation: true)
Prism中的深度导航功能非常强大,因此您可以一次导航多个页面
NavigationService.NavigateAsync("Page1/Page2/Page3");
导航到Page1然后导航到Page2然后保持正确的导航堆栈。
您还可以使用绝对uri
替换整个导航堆栈 NavigationService.NavigateAsync(new uri("www.myapp.com/LoginPage", UriKind.Absolute);
这对于您希望用户在可以访问任何其他页面之前登录的登录/身份验证方案非常有用。
OnNavigatingTo()和OnNavigatedTo()方法类似,但它们在不同时间触发。如果你追踪你将看到的电话
{Navigate to Page1}
Page1ViewModel.Constructor
Page1ViewModel.OnNavigatingTo
Page1ViewModel.OnNavigatedTo
{Navigate to Page 2}
Page2ViewModel.Constructor
Page2ViewModel.OnNavigatingTo
Page1ViewModel.OnNavigatedFrom
Page2ViewModel.OnNavigatedTo
所以在第一页的OnNavigatedFrom之前调用第二页的OnNavigatingTo,然后调用第二页的OnNavigatedTo。
这使您可以根据需要将代码放在导航流程中的正确位置。如果您只是从一个页面移动到另一个页面,那么OnNavigatedTo可能就是您想要的。
希望有所帮助。