我试图找到一种方法来添加一个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());
}
答案 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