无法弹出弹出页面

  • 本文关键字: c# xamarin popup nuget
  • 更新时间 :
  • 英文 :


也许有人能回答这个问题,我对编程有点陌生,不明白发生了什么。我试着弹出一个弹出式页面,但它不能正常工作。

以下情况:我有三个Content page一个弹出页面

:

尝试1:

private void BtnOkay_Clicked(object sender, EventArgs e)
{
if (currentDungeon == "DungeonX")
{
Navigation.PopModalAsync();
Navigation.PopModalAsync();
Navigation.PushModalAsync(new DungeonPage(currentPlayer));
}
}

第一个结果:它完全忽略了Naviagtion.PopModalAsync();并将新的DungeonPage推到它的顶部。

尝试2:

private async void BtnOkay_Clicked(object sender, EventArgs e)
{
if (currentDungeon == "DungeonX")
{
await Navigation.PopModalAsync();
await Navigation.PopModalAsync();
await Navigation.PushModalAsync(new DungeonPage(currentPlayer));
}
}

第二个结果:与第一个结果相同,它完全忽略Naviagtion.PopModalAsync();并将新的DungeonPage推到它的顶部。

第三尝试:

private async void BtnOkay_Clicked(object sender, EventArgs e)
{
if (currentDungeon == "DungeonX")
{
await PopupNavigation.Instance.PopAsync();
await Navigation.PopModalAsync();
await Navigation.PushModalAsync(new DungeonPage(currentPlayer));
}
}

第三个结果:我尝试以正确的方式弹出弹出页面,但现在我得到以下异常。System.IndexOutOfRangeException: 'No Page in PopupStack'

边信息:

我创建的弹出页面如下:

private async Task PlayerAliveCheck()
{
...
await Navigation.PushModalAsync(new CombatPostScreen(player, result);
...
}

我有一个类似的情况,其中第一次尝试工作完全正常,函数checkLevel()从私有void事件调用。

private void checkLevel()
{
Navigation.PushModalAsync(new SmelteryPageDetail(slotItem, player, characters));
}
private void BtnUpgrade_Clicked(object sender, EventArgs e)
{
...
Navigation.PopModalAsync();
Navigation.PopModalAsync();
Navigation.PushModalAsync(new SmelteryPage(currentPlayer));
}

我尝试了async和await awswell,它仍然有效。如果我尝试使用上面提到的正确方法,它会抛出相同的异常。

如果你读到这里,提前感谢你的时间

我刚刚发现这部分代码一直阻止页面弹出。

protected override void OnAppearing()
{
base.OnAppearing();
Navigation.PopModalAsync();
}

也许有人可以编辑这个答案并添加一个解释。

感谢大家的帮助。

相关内容

  • 没有找到相关文章

最新更新