【问题标题】:xamarin navigation bar not showing TitleViewxamarin 导航栏不显示 TitleView
【发布时间】:2019-03-14 11:44:23
【问题描述】:

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());.

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

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

【问题讨论】:

  • 您可以为NavigationPage 设置自定义TitleView 将导航事件更改为Navigation.PushAsync(new NavigationPage(new MyGroups()));,您现在可以看到您的自定义标题视图了吗?
  • @Evz 抱歉,但只知道带有默认后退箭头的默认栏。
  • 定位平台是什么?
  • @Evz 现在是的(我在错误的位置更改了呼叫)但是现在我有两个导航栏,一个带有箭头,一个带有我的标题视图。如果我设置 NavigationPage.HasNavigationBar="false" 那么我只得到默认的并且标题视图不显示。我需要对此进行更多阅读,因为我似乎不明白 LOL 发生了什么。
  • 我将尝试通过将我的评论转换为正确答案来指导您。

标签: xaml xamarin xamarin.forms


【解决方案1】:

如果你在 Xamarin.Forms 应用中使用 Shell,则必须使用 &lt;Shell.TitleView&gt; 而不是 &lt;NavigationPage.TitleView&gt;。下面的代码对我有用...

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

【讨论】:

  • 应该在ContentPage里面使用。还有一些关于绑定、热重载等的错误。
【解决方案2】:

正如 XAML 所述:
&lt;NavigationPage.TitleView&gt; .. &lt;/NavigationPage.TitleView&gt;

您可以将完全自定义的View 设置为NavigationBar,但是,这只能在NavigationPages 上实现。您的代码部分正确,因为您将NavigationPage.TitleView 设置在NavigationPage 上而不是:
Navigation.PushAsync(new MyGroups())

如果您将导航到NavigationPage
Navigation.PushAsync(new NavigationPage(new MyGroups()))

您应该会看到您的自定义NavigationPage.TitleView。但是,结果将取决于您当前的导航模型,并且您最终可能会使用多个导航栏。那是因为您会将NavigationPage 嵌套在另一个NavigationPage 中。

我强烈建议您阅读有关此主题的 official documentation,以便您清楚了解。

【讨论】:

  • 是的,我需要更多地了解我在做什么。谢谢。
  • 请注意,我回去阅读了文档,我的页面设置就像它说的那样。但是,如果我按照指示 TitleView 仍然不显示,除非我执行 Navigation.PushAsync(new NavigationPage(new MyGroups())) ,它显示了双导航栏。所以我迷路了..
  • @Mike 如果您解决了上述问题,请给我打电话。即使我面临同样的情况
  • @Divya 我不得不像这样设置我的导航 await Navigation.PushAsync(new ViewLikes());
  • @Mike 是的,即使我将导航设置为类似于您的评论,但我仍然面临两个导航栏的问题,一个带有箭头,一个带有我的标题视图。
【解决方案3】:

你也可以像 MainPage 一样设置 Navigation

MainPage = new NavigationPage(new PageName());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2023-03-19
    相关资源
    最近更新 更多