【问题标题】:How do you switch between two different Xamarin Form pages?如何在两个不同的 Xamarin 表单页面之间切换?
【发布时间】:2015-10-27 21:32:47
【问题描述】:

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

希望使用NavigationPage(它有一个自动显示的小返回箭头。

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

例如。

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

我觉得我有两种用户可能处于的模式

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

好像我需要将AppMainPage 更改为这两者之一?

【问题讨论】:

    标签: xamarin xamarin.forms xamarin.ios


    【解决方案1】:

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

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

    App.Current.MainPage = new MyContentPage();
    

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

    NavigationPage.SetHasNavigationBar(this, false);
    

    【讨论】:

      【解决方案2】:

      您可以通过在应用程序实例中设置 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

      更新示例。

      【讨论】:

      • Sorta - 您确实解释了如何将 MainPage 设置为 2 倍不同的页面......但我正在寻找一个更复杂的解决方案来执行此操作,其中不同的页面位于不同的类中,等
      • 我还是不明白这个问题。更新了示例以提供更多详细信息。
      【解决方案3】:

      如果你喜欢在页面之间切换,那么你可以简单地做

      Application.Current.MainPage=new YourPage();
      

      How to Change MainPage in xamarin forms at runtime?

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

      【讨论】:

        【解决方案4】:

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

        await Navigation.PushModalAsync (new LoginPage());
        

        进入LoginPage后,验证通过后即可使用popModelAsync:

        await Navigation.PopModalAsync ();
        

        【讨论】:

        • 它并不是真正的“最佳实践”,但它会导致其他问题。 IE 您没有用户或他们的角色来做出您可能需要加载主页的决定。当然,您可以解决它,但通常感觉很脏。
        猜你喜欢
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多