Prism xamarin 疑惑。你能澄清一下吗?
Prism xamarin Doubts .Can you clarify?
我正在尝试了解 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 参数)
它们都在构造函数被触发后被触发。
什么时候使用一个,什么时候使用另一个的实际例子?
当您要加载表单时,您在 there.Are 他们使用的逻辑中放置了什么样的逻辑?通常您在其中放置了什么样的验证以及为什么?
public void OnNavigatedTo(NavigationParameters parameters)
{
if(parameters.GetValue<NavigationMode>(KnownNavigationParameters.NavigationMode) == NavigationMode.Back)
{
}
//or logic like
if ( parameters.ContainsKey("myId") )
{
}
}
为什么要使用 parameters.ContainsKey("myId") 或导航模式检查。
我只是想了解应该如何使用 OnNavigatedTo/OnNavigatingTo。
如果有人能用几句话来描述一个场景,我就会明白如何使用这些方法。
非常感谢
由于 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");
导航到第 1 页,然后第 2 页,然后第 3 页,并保持正确的导航堆栈。
您还可以使用绝对 uri 替换整个导航堆栈
NavigationService.NavigateAsync(new uri("www.myapp.com/LoginPage", UriKind.Absolute);
这对于 Login/authentication 您希望用户在访问任何其他页面之前先登录的场景很有用。
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 可能就是您想要的。
希望对您有所帮助。
我正在尝试了解 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 参数)
它们都在构造函数被触发后被触发。 什么时候使用一个,什么时候使用另一个的实际例子?
当您要加载表单时,您在 there.Are 他们使用的逻辑中放置了什么样的逻辑?通常您在其中放置了什么样的验证以及为什么?
public void OnNavigatedTo(NavigationParameters parameters)
{
if(parameters.GetValue<NavigationMode>(KnownNavigationParameters.NavigationMode) == NavigationMode.Back)
{
}
//or logic like
if ( parameters.ContainsKey("myId") )
{
}
}
为什么要使用 parameters.ContainsKey("myId") 或导航模式检查。
我只是想了解应该如何使用 OnNavigatedTo/OnNavigatingTo。 如果有人能用几句话来描述一个场景,我就会明白如何使用这些方法。
非常感谢
由于 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");
导航到第 1 页,然后第 2 页,然后第 3 页,并保持正确的导航堆栈。
您还可以使用绝对 uri 替换整个导航堆栈
NavigationService.NavigateAsync(new uri("www.myapp.com/LoginPage", UriKind.Absolute);
这对于 Login/authentication 您希望用户在访问任何其他页面之前先登录的场景很有用。
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 可能就是您想要的。
希望对您有所帮助。