关于 xaml:xamarin 导航栏不显示 TitleView

xamarin navigation bar not showing TitleView

Xamarin 新手,我正在尝试在我的跨平台应用程序中创建自定义导航栏。经过一番阅读,我发现我可以在我的 xaml 页面文件中使用 title-view 组件,如下所示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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());.

但是,唯一显示的是带有后退图标箭头的默认导航页面?

不知不觉我错过了一些东西,或者我不明白一些东西。这需要在应用程序级别完成吗?


如果您在 Xamarin.Forms 应用程序中使用 Shell,则必须使用 <Shell.TitleView> 而不是 <NavigationPage.TitleView>。下面的代码对我有用...

1
2
3
<Shell.TitleView>
    <Label Text="QR Code" HorizontalTextAlignment="End" Margin="0,0,10,0" Padding="0" VerticalTextAlignment="Center" TextColor="White" FontSize="20"/>
</Shell.TitleView>


正如 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

我强烈建议您阅读有关此主题的官方文档,以便您清楚了解。


您也可以使用 MainPage 设置 Navigation,例如

1
MainPage = new NavigationPage(new PageName());