Xamarin表单导航堆栈

时间:2015-02-11 22:20:24

标签: xamarin xamarin.forms

据我所知,如果重新创建主机本机Activity,则会重新创建Xamarin Forms页面。 如果我在设备上启用“不要保留活动”,则可以轻松测试。 我希望NavigationPage能够使用Xamarin Forms Pages保留后台堆栈。

如何保留后筹码? 我必须实现自己的NavigationPage吗? 我对当前版本的Xamarin Forms有哪些选择?

3 个答案:

答案 0 :(得分:1)

安德烈,

使根视图控制器成为您的NavigationPage,您可以根据需要推送尽可能多的ContentPage。导航页面保持自动推送视图堆栈,然后您可以将它们弹出到您的rootview ContentPage或以前的ContentPage ... ...

var mainNav = new NavigationPage(new BoxedView());

然后推动:

Xamarin.Forms.Device.BeginInvokeOnMainThread(() => 
    Navigation.PushAsync(CONTENT_PAGE_OBJECT, false));

要弹出:

Xamarin.Forms.Device.BeginInvokeOnMainThread(() => Navigation.PopAsync(true));

答案 1 :(得分:1)

如果您还记得push and pop operation in stack,那么这张图片将为您提供所需的一切

visual representation of page navigation in xamarin forms

答案 2 :(得分:0)

您可以在此处管理导航堆栈:

//Adding pages to Navigation stack
Xamarin.Forms.Current.MainPage = new NavigationPage(new Page1());
Xamarin.Forms.Current.MainPage.Navigation.PushAsync(new Page2(), false));
Xamarin.Forms.Current.MainPage.Navigation.PushAsync(new Page3(), false));

//Removing pages from Navigation stack
var page3 = Xamarin.Forms.Current.MainPage.Navigation.PopAsync(false));
var page2 = Xamarin.Forms.Current.MainPage.Navigation.PopAsync(false));
var page1 = Xamarin.Forms.Current.MainPage.Navigation.PopAsync(false));