MAUI: GoToAsync()和PushAsync()在页面之间导航有什么区别?



我正在尝试学习如何在MAUI应用程序和MVVM中在页面之间导航的最佳方法。

我在微软的示例中看到,默认的方式是使用PushAsync(),但后来我看到可以使用Shell.Current.GoToAsync()导航。

两者的区别是什么?或者它们是互补的?

我创建了一个样本来测试PushAsync()GoToAsync()

GoToAsync()根据路由在当前页面和目标页面之间进行导航。因此,它不会创建同一页面的多个实例。一个页面只有一个实例。如果你选择Page1 ->Page2与GoToAsync(),你不能使用GoToAsync()去Page1。你只能使用GoToAsync("..")去Page1

但是对于PushAsync(),您可以使用PushAsync(new Page2())来创建同一页面的多个实例。导航堆栈会是Page1 ->所以Page2→所述→所以Page2…

所以GoToAsync()就像带有单例页面的PushAsync()。当您使用GoToAsync()时,需要注册路由。

此外,当您使用GoToAsync()进行导航时,有一些限制,例如您可以将集合数据传递到下一页。但是当您使用PushAsync()时,您可以将几乎所有类型的数据传递给目标页面。

总的来说,PushAsync()易于使用和传递数据,GoToAsync()的功能更好,但需要更多的细节。

我认为PushAsync()不再可用来导航与Shell,你应该使用GotoAsync()。

但是PushAsync与将页面堆叠在其他页面上有关,因此您可以稍后弹出并导航回该页面。GotoAsync()使用亲属导航,你可以在这里查看文档:link

相关内容

  • 没有找到相关文章

最新更新