我正在尝试了解如何在 MAUI 应用程序和 MVVM 的页面之间导航的最佳方式。
我在 Microsoft 的示例中看到,默认的操作方式是使用PushAsync(),但后来我发现可以使用 进行导航Shell.Current.GoToAsync()。
两者有什么区别?或者说它们是互补的?
我创建了一个示例来测试PushAsync()和GoToAsync()。
GoToAsync()根据路线在当前页面和目标页面之间导航。所以它不会创建同一页面的多个实例。一页只有一个实例。如果您使用 导航,例如 Page1 -> Page2 GoToAsync(),则无法使用GoToAsync()转到 Page1。您只能使用GoToAsync("..")转到Page1。
但对于PushAsync(),您可以使用PushAsync(new Page2())来创建同一页面的多个实例。导航堆栈将类似于 Page1 -> Page2 -> Page1 -> Page2...
所以这GoToAsync()就像PushAsync()单例页面一样。并且在使用的时候需要注册路由GoToAsync()。
另外,当你使用GoToAsync()导航时,还有一些限制,比如你可以将一个集合数据传递到下一页。但是当您使用 时PushAsync(),您可以将几乎所有类型的数据传递到目标页面。
一般来说,PushAsync()易于使用和传递数据,GoToAsync()功能较好,但需要更多细节。
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |