我正在为IOS和Android开发Xamarin Forms应用程序。我有3个xamarin表单页面的列表说X.xaml, Y.xaml, Z.xaml
。页面X.xaml, Y.xaml
有1并单击该按钮,它会打开下一个Xamarin表单。最后Z.xaml
有2个按钮btnBack
& btnConfirm
<Button x:Name="btnBack"></Button>
<Button x:Name="btnConfirm"></Button>
当我点击后退按钮时,我想将其导航到我的上一页,但我不想像导航后退按钮或硬件后退按钮单击那样。 为此,我尝试了这段代码,但这不起作用。
Z.xaml.cs
public partial class Z : ContentPage
{
public Z()
{
InitializeComponent();
btnBack.Clicked += btnBack_Clicked;
}
private void btnBack_Clicked(object sender, EventArgs e)
{
var existingPages = Navigation.NavigationStack.ToList();
foreach (var page in existingPages)
{
if(page == this)
Navigation.RemovePage(page);
}
}
}
在此代码中,当我点击Back Button
时,一旦我点击Y.xaml
上的按钮并打开Y.xaml
页面,它就会导航到prevoius页面Z.xaml
让我一片空白。
Y.xaml.cs
public partial class Y: ContentPage
{
public Y()
{
InitializeComponent();
btnZ.Clicked += btnZ_Clicked;
}
void btnZ_Clicked(object sender, System.EventArgs e)
{
Navigation.PushAsync(new Z());
}
}
答案 0 :(得分:1)
@Kowalski有正确的答案,但它不完整。
你必须await Navigation.PopAsync()
否则你可能会搞乱导航堆栈。所以总是等着它。例如:
async void btnBack_Clicked(object sender, EventArgs e)
{
await Navigation.PopAsync();
}
除此之外,请注意Xamarin.Forms中存在与导航相关的错误,以下是您可能感兴趣的错误: https://bugzilla.xamarin.com/show_bug.cgi?id=59172
P.S。:在这里,您可以找到关于Popping Pages from the Navigation Stack的官方指南。
答案 1 :(得分:0)
你应该调用Navigation.PopAsync()
返回