0

我设置了一个 5 页的 FreshTabbedNavigationContainer。在第 5 个选项卡式页面中,这是一个 SettingsPage,其中有一种显示方式,而 AboutPage 则通过 SettingsPageModel 显示,如下所示 public Command AboutCommand { get { return new Command(() => { CoreMethods.PushPageModel<AboutPageModel>(); }); } }

当用户通过选择另一个选项卡离开时,该另一个选项卡将正确显示。如果用户通过选项卡选择 SettingsPage,则子 AboutPage 将自动显示。选择另一个选项卡页面时,我想从导航堆栈中删除大约页面。

我在 AboutPage.xaml.cs 中试过这个

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        ((AboutPageModel)BindingContext).CoreMethods.RemoveFromNavigation();
    }

这可行,但如果在 AboutPage 中按下应用程序上的后退按钮,那么它已经从导航堆栈中删除,并且应用程序崩溃。

如何检查 PageModel 是否仍在导航堆栈中?

4

1 回答 1

0

我已经设法解决了这个问题:)

在我创建 FreshTabbedNavigationContainer 的 App 构造函数中的 App.xaml.cs 文件中,在设置 MainPage 之后

MainPage = tabbedNavigation;

然后我添加以下代码

tabbedNavigation.CurrentPageChanged += (sender, e) => {
   tabbedNavigation.PopToRoot();
};

它完美地工作。

于 2017-07-21T15:01:08.383 回答