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

Álv*_*cía 5 c# mvvm maui

我正在尝试了解如何在 MAUI 应用程序和 MVVM 的页面之间导航的最佳方式。

我在 Microsoft 的示例中看到,默认的操作方式是使用PushAsync(),但后来我发现可以使用 进行导航Shell.Current.GoToAsync()

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

Liy*_*SFT 6

我创建了一个示例来测试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()功能较好,但需要更多细节。