2

我正在尝试Label在应用栏(导航栏)上方添加一个可以是任何控件的图层(例如,让我们使用一个) Shell,以便它在所有页面上都可用。为此,我尝试使用TitleView,这显然不能满足我的要求(请参见下面的屏幕截图)。

试图

Page1.xaml:

<ContentPage...>
...
  <Shell.TitleView>
     <StackLayout Spacing="0">
       <Label Text="Hello world" VerticalOptions="Start" HorizontalOptions="Start"/>
       <Label Text="{Binding Source={x:Reference page1}, Path=Title}"/>
     </StackLayout>
  </Shell.TitleView>
</ContentPage>

AppShell.xaml:

<Shell...>
...
    <FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
        <Tab Title="Tab1">
            <ShellContent Title="Page1"
                          ContentTemplate="{DataTemplate local:Page1}"/>

            <ShellContent Title="Page2"
                          ContentTemplate="{DataTemplate local:Page2}"/>
        </Tab>

        <Tab Title="Tab2">
            <ShellContent Title="Page1"
                          ContentTemplate="{DataTemplate local:Page1}"/>

            <ShellContent Title="Page2"
                          ContentTemplate="{DataTemplate local:Page2}"/>
        </Tab>
    </FlyoutItem>
</Shell>

因此,我要实现的目标分为两点:

  1. Label应该在整个应用栏 ( FlyoutIcon+ )的TitleView顶部,而不是TitleView仅在顶部,如屏幕截图中所述。
  2. 同时原有的风格ContentPage.Title不应该改变。

原始页面标题

原始标题

试图

试图

期望的结果

期望的

奖金问题:

应用栏似乎Shell由两部分组成FlyoutIconTitleView. Xamarin.Forms 如何/在哪里构建Shell布局?非常感谢您在XF Github 存储库中提供简短解释或指向相关类。

尝试使用一些 Shell 自定义渲染器但没有成功。

编辑

  • 附加的控件应该是其中的一部分,Shell以便我可以根据当前页面自定义它的内容。Flyout这意味着在打开时也要被覆盖。

编辑 2

解决方案可能来自即将推出的功能Shell.AppBar。同时开放Android项目级别的解决方案。

4

0 回答 0