在TabbedPage ViewModels中使用PopAsync时不起作用

时间:2020-07-13 18:13:15

标签: c# xamarin xamarin.forms

好吧,所以在我以前的设计中,在称为TasksGroupPage的MainPage上,我有一个“ +”图标,该图标将我带到NewT​​asksGroupPage以填写表单,然后单击save命令创建一个新TasksGroup(因此,不再需要+图标功能来加载页面)。

这工作得很好,单击“保存”按钮后,将带我进入MainPage。

但是我的问题是我更改了设计,现在删除了+图标,而是创建了一个新标签,现在将我带到NewT​​asksGroupPage。

要创建此标签,我只需将以下代码添加到我的TasksGroupPage(主页)中:width

现在的问题是: 当我单击NewTaskPageViewModel中的save命令时,该页面不会像以前一样将我带到最后一页,而是将所有文本保留在输入框中,并且仅在一段时间后创建TasksGroupPage。

我应该如何设置此新设计才能正常工作?如果无法执行,是否可以将GestureRecognizers添加到其中一个选项卡?

谢谢。

您现在可以在这里看到我的代码:

TasksGroupPage.xaml

controller

TasksGroupPage.xaml.cs,这是我不再需要的功能,但这是我使用的带有+图标的功能

<views:NewTasksGroupPage></views:NewTasksGroupPage>

NewTaskPageViewModel.cs,这是我保存命令的结尾,之前将我带到主页(TasksGroupPage),但现在它停留在那里并且不会将我的条目重置为空白(即使在其他选项卡之间切换时也是如此)页)

<TabbedPage>
    <ContentPage>
    // some xaml
    </contentPage>
<views:NewTasksGroupPage></views:NewTasksGroupPage>

</TabbedPage>

1 个答案:

答案 0 :(得分:0)

如果您阅读document Xamarin.Forms Navigation

您会发现NavigationPage和TabbedPage是Xamarin.forms中导航页面的两种不同方式。

Navigation.PushAsyncNavigation.PopAsync仅在NavigationPage中起作用,而在TabbedPage中不起作用,这就是the page doesn't take me to the last page like it did before的原因。

如果使用TabbedPage,则可以使用以下代码切换页面:

async void SaveNewTask(object sender, EventArgs args)
{

    //this here means the current ContentPage 
    //this.Parent = NavigationPage
    var tabbedPage = this.Parent.Parent as TabbedPage;

    //if you don't have navigationPage, just use:
    //var tabbedPage = this.Parent as TabbedPage;

    //Switch to first page in tabs
    tabbedPage.CurrentPage = tabbedPage.Children[0];
}