Xamarin的新手,我正在尝试在我的跨平台应用程序中创建自定义导航栏。经过一番阅读后,我发现我可以使用xaml页面文件中的title-view组件,如下所示。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="amici.MyGroups">
<NavigationPage.TitleView>
<StackLayout Orientation="Horizontal" VerticalOptions="Center" Spacing="10">
<Label HorizontalOptions="StartAndExpand" Text="Left"/>
<Label HorizontalOptions="CenterAndExpand" Text="Center"/>
<Label HorizontalOptions="EndAndExpand" Text="Right"/>
</StackLayout>
</NavigationPage.TitleView>
<ContentPage.Content>
<ScrollView>
<Grid x:Name="grid1">
<StackLayout>
<Label Text="Welcome"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</StackLayout>
<ActivityIndicator x:Name="WaitIcon" IsRunning="{Binding IsBusy}" VerticalOptions="Center" HorizontalOptions="Center" />
</Grid>
</ScrollView>
</ContentPage.Content>
</ContentPage>
我这样导航到我的页面“ MyGroups”:Navigation.PushAsync(new MyGroups());。
但是,唯一显示的是带有后退图标箭头的默认导航页面?
很明显我错过了一些东西,或者我听不懂。这需要在应用程序级别完成吗?
答案 0 :(得分:2)
如XAML所述:
<NavigationPage.TitleView> .. </NavigationPage.TitleView>
您可以将完全自定义的View
设置为NavigationBar
,但是,仅在NavigationPage
上可以这样做。您的代码部分正确,因为您未在NavigationPage.TitleView
上设置NavigationPage
:
Navigation.PushAsync(new MyGroups())
如果您要导航到NavigationPage
:
Navigation.PushAsync(new NavigationPage(new MyGroups()))
您应该看到自定义NavigationPage.TitleView
。但是,结果将取决于您当前的导航模型,并且最终可能会有多个导航栏。这是因为您会将NavigationPage
嵌套在另一个NavigationPage
中。
我强烈建议您阅读有关该主题的official documentation,这样对您来说就会很清楚。
答案 1 :(得分:2)
如果您在Xamarin.Forms应用程序中使用Shell,则必须使用<Shell.TitleView>
而不是<NavigationPage.TitleView>
。下面的代码为我工作...
<Shell.TitleView>
<Label Text="QR Code" HorizontalTextAlignment="End" Margin="0,0,10,0" Padding="0" VerticalTextAlignment="Center" TextColor="White" FontSize="20"/>
</Shell.TitleView>
答案 2 :(得分:0)
您还可以通过MainPage设置导航,例如
MainPage = new NavigationPage(new PageName());