如何在两个不同的Xamarin表单页面之间切换?

时间:2015-08-05 08:11:35

标签: xamarin xamarin.ios xamarin-forms

我正在试图弄清楚如何在Xamarin Forms中的两个不同页面之间切换。

希望使用NavigationPage(其中包含自动显示的 back 箭头。

我有一个登录页面(ContentPage),一旦此人通过身份验证,我就需要导航到我的仪表板页面(TabbedPage)。

例如

enter image description here

接下来,TabbedPage中的一个选项卡是登录用户的配置文件。因此,我需要将它们注销。所以我会有一个按钮来记录它们,这意味着我需要将它们导航回登录页面(那是ContentPage)。

enter image description here

我觉得我有两个模式用户可能在。

  • 未经授权的。 (ContentPage
  • 授权。 (TabbedPage)。

就像..我需要将App的{​​{1}}更改为这两个中的一个?

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:16)

要将MainPage更改为另一个,请执行以下操作:

App.Current.MainPage = new NavigationPage(new MyContentPage());

App.Current.MainPage = new MyContentPage();

顺便说一句:您可以使用NavigationPage然后隐藏工具栏:

NavigationPage.SetHasNavigationBar(this, false);

答案 1 :(得分:1)

您可以像往常一样通过在Application实例中设置MainPage来进行导航。小样本。

namespace TestNavigation
{
    public class App : Application
    {
        public App ()
        {
            // The root page of your application
            MainPage = new MyPage1 ();
        }
    }
}


namespace TestNavigation
{
    public class MyPage1 : ContentPage
    {
        public MyPage1 ()
        {
            var button = new Button () {
                Text = "Click me"
            };
            button.Clicked += (object sender, EventArgs e) => {
                Application.Current.MainPage = new MyPage2 ();
            };
            Content = new StackLayout { 
                Children = {
                    button
                }
            };
        }
    }
}


namespace TestNavigation
{
    public class MyPage2 : ContentPage
    {
        public MyPage2 ()
        {
            Content = new StackLayout { 
                Children = {
                    new Label { Text = "Hello ContentPage" }
                }
            };
        }
    }
}

<强> EDIT1

我提交了这个答案但后来我意识到我可能不理解你的问题。

<强> EDIT2

更新了样本。

答案 2 :(得分:0)

如果您想在页面之间切换,那么您只需执行

即可
Application.Current.MainPage=new YourPage();

How to Change MainPage in xamarin forms at runtime?

这是我为获得结果所做的工作

答案 3 :(得分:-1)

对于登录页面,最佳做法是使用

await Navigation.PushModalAsync (new LoginPage());

进入LoginPage后,您可以在验证通过后使用popModelAsync:

await Navigation.PopModalAsync ();