有什么方法可以在Xamarin.Forms的同一页上插入导航栏和标签栏?

时间:2019-01-24 19:53:10

标签: xamarin xamarin.forms

我正进入一个新项目,并且一直试图在标题中的Xamarin Forms的同一页上插入导航栏和选项卡栏而陷入困境。问题是:我只能插入一个或另一个,而不能两者都插入。你们是否知道解决此问题的任何方法,例如使用自定义渲染器或类似的方法?

XAML代码都以

开头
<ContentPage ... />

或者以

开头
<TabbedPage ... />

如果有人可以帮忙,我会很高兴!

2 个答案:

答案 0 :(得分:1)

  

是否可以在Xamarin.Forms的同一页面中插入导航栏和标签栏?

您当然可以实施!您可以用子Page对象的集合(例如ContentPage或NavigationPage实例的集合)填充TabbedPage。请参考以下代码。

  

在App.xaml.cs中(主页是一个TabbedPage)

public partial class App : Application
{
    public App()
    {
        InitializeComponent();

        MainPage =new HomePage(); 
    }

    protected override void OnStart()
    {
        // Handle when your app starts
    }

    protected override void OnSleep()
    {
        // Handle when your app sleeps
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
    }
}
  

在HomePage.xaml.cs中(Mypage和MyPage1是ContentPages)

public partial class HomePage : TabbedPage
{
    public HomePage()
    {
        InitializeComponent();


        var contentPage = new MyPage1();
        contentPage.Title = "Page1";
        contentPage.Icon = "Mine.png";

        var navigationPage = new NavigationPage(new MyPage());
        navigationPage.Icon = "Mine.png";
        navigationPage.Title = "Page2";

        Children.Add(contentPage);
        Children.Add(navigationPage);

    }

  }
}
  

或者您可以在HomePage.xaml中使用XAML代码实现它

<?xml version="1.0" encoding="UTF-8"?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:local="clr-namespace:xxx" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="xxx.HomePage">
  <local:MyPage Title="Page1" Icon="xxx.png"/>    
  <NavigationPage Title="Page2" Icon="xxx.png">
    <x:Arguments>
        <local:MyPage1 />
    </x:Arguments>
  </NavigationPage>
</TabbedPage>

现在TabbedPage填充了两个子Page对象。第一个子项是ContentPage实例,第二个选项卡是包含ContentPage实例的NavigationPage。就像下面的图片一样。

effect1

effect2

答案 1 :(得分:0)

TabbedPage是其他页面的容器。每个选项卡都可以包含一个子导航页

TabbedPage
  Tab 1 - NavigationPage(ContentPage)
  Tab 2 - ContentPage
  Tab 3 - NavigationPage(ContentPage)