我已经设置了一个5页的FreshTabbedNavigationContainer。
在第5个标签页中,这是一个SettingsPage,其中有一种显示方式,AboutPage通过SettingsPageModel显示,如下所示
public Command AboutCommand
{
get
{
return new Command(() =>
{
CoreMethods.PushPageModel<AboutPageModel>();
});
}
}
当用户通过选择另一个选项卡导航时,此其他选项卡将正确显示。 如果用户通过选项卡选择SettingsPage,则会自动显示子AboutPage。 我想在选择另一个标签页时从导航堆栈中删除AboutPage。
我在AboutPage.xaml.cs
中尝试了这个 protected override void OnDisappearing()
{
base.OnDisappearing();
((AboutPageModel)BindingContext).CoreMethods.RemoveFromNavigation();
}
这可行但是如果在AboutPage中按下后退按钮,那么它已经从导航堆栈中删除,应用程序崩溃了。
如何检查PageModel是否仍在导航堆栈中?
答案 0 :(得分:0)
我设法解决了这个问题:)
在我创建FreshTabbedNavigationContainer的App构造函数中的App.xaml.cs文件中,在设置MainPage之后
MainPage = tabbedNavigation;
然后我添加以下代码
tabbedNavigation.CurrentPageChanged += (sender, e) => {
tabbedNavigation.PopToRoot();
};
效果很好。