Xamarin表单中的Navigation.PushModalAsync()和Navigation.PushAsync()之间有什么不同?

Xamarin表单中的Navigation.PushModalAsync()和Navigation.PushAsync()之间有什么不同?,xamarin,xamarin.ios,xamarin.forms,Xamarin,Xamarin.ios,Xamarin.forms,问这个问题的原因我在xamarin forms mvvm体系结构中使用PushAsync时出错 await Navigation.PushAsync(new Page2()); 错误是 我已通过将PushAsync更改为PushModelAsync来更正此错误 await Navigation.PushModalAsync(new Page2()); 有人知道这个错误的原因吗 我正在从ViewModel调用PushModelAsync public class Page1Model : I

问这个问题的原因我在xamarin forms mvvm体系结构中使用PushAsync时出错

await Navigation.PushAsync(new Page2());
错误是

我已通过将PushAsync更改为PushModelAsync来更正此错误

await Navigation.PushModalAsync(new Page2());
有人知道这个错误的原因吗

我正在从ViewModel调用PushModelAsync

public class Page1Model : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public INavigation Navigation { get; set; }
        public Command ContinueBtnClicked { get; }

        public Page1Model(INavigation navigation)
        {
            this.Navigation = navigation;
            this.ContinueBtnClicked = new Command(async () => await GotoPage2());
        }

        public async Task GotoPage2()
        {
            await Navigation.PushModalAsync(new Page2());
        }
    }

App.xaml.cs
中,将您的第一页包装在
NavigationPage
中,如下所示:
MainPage=new NavigationPage(new Page1())

现在它可以工作了。如果您只有一个页面,iOS不知道如何从那里导航到另一个页面,因此它需要一个容器页面来处理导航


模态变量之所以有效,是因为它生成了一个新的导航堆栈,并在所有其他页面之上显示页面(因此是模态的)。在
App.xaml.cs
中,将第一页包装在
NavigationPage
中,如下所示:
MainPage=new NavigationPage(new Page1())

现在它可以工作了。如果您只有一个页面,iOS不知道如何从那里导航到另一个页面,因此它需要一个容器页面来处理导航


模态变体之所以有效,是因为它产生了一个新的导航堆栈,并在所有其他内容之上显示页面(因此是模态的)。

感谢您的贴切解释。是的,它很管用,而且得到了知识。谢谢你甜蜜的解释。是的,它起作用了,并且获得了知识