NavigationPage作为XAML中TabbedPage的子项

时间:2014-12-18 12:11:54

标签: xaml xamarin xamarin.forms

我试图找到一种方法来添加一个NavigationPage是XAML中TabbedPage的子节点。为NavigationPage添加xaml对我来说不起作用。在我的代码中,GetMainPage()返回页面是一个TabbedPage XAML,它有子节点,也在XAML中描述,如何在XAML之间以编程方式插入NavigationPage?

以下是我的代码:

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
   <ContentPage x:Name="FirstTab" Title="Music">
      <StackLayout Padding="5, 25">
          ...
      </StackLayout>
   </ContentPage>-->
   <ContentPage x:Name="SecondTab" Title="Videos">
      <StackLayout Padding="5, 25">
          ...
      </StackLayout>
   </ContentPage>-->
   <ContentPage x:Name="ThirdTab" Title="Movies">
      <StackLayout Padding="5, 25">
          ...
      </StackLayout>
   </ContentPage>-->
</TabbedPage>

在App.cs中

public App()
{
        // The root page of your application
        MainPage = new NavigationPage(new TabbedMainPage());
}

2 个答案:

答案 0 :(得分:2)

您无法在NavigationPage中真正添加XAML - 它没有可用于分配Content的公开Children属性。但是,在代码中很容易做到:

var tabs = new TabbedPage();

tabs.Children.Add(new NavigationPage(new Page1()));
tabs.Children.Add(new NavigationPage(new Page2()));
tabs.Children.Add(new NavigationPage(new Page3()));

答案 1 :(得分:0)

现在我们也可以在XAML中将NavigationPage作为TabbedPage的子代。

<?xml version="1.0" encoding="UTF-8"?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            x:Class="Views.TabbedMainPage"
            xmlns:ent="clr-namespace:Views.Entertainment">
    <ent:Music />
    <NavigationPage Title="Videos">
        <x:Arguments>
            <ent:Videos />
        </x:Arguments>
    </NavigationPage>
    <ent:Movies />
</TabbedPage>

参考:
Microsoft:Xamarin:TabbedPage
Github:TabbedPageWithNavigationPage