我正在尝试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>
因此,我要实现的目标分为两点:
Label
应该在整个应用栏 (FlyoutIcon
+ )的TitleView
顶部,而不是TitleView
仅在顶部,如屏幕截图中所述。- 同时原有的风格
ContentPage.Title
不应该改变。
原始页面标题
试图
期望的结果
奖金问题:
应用栏似乎Shell
由两部分组成FlyoutIcon
,TitleView
. Xamarin.Forms 如何/在哪里构建Shell
布局?非常感谢您在XF Github 存储库中提供简短解释或指向相关类。
尝试使用一些 Shell 自定义渲染器但没有成功。
编辑
- 附加的控件应该是其中的一部分,
Shell
以便我可以根据当前页面自定义它的内容。Flyout
这意味着在打开时也要被覆盖。
编辑 2
解决方案可能来自即将推出的功能Shell.AppBar。同时开放Android项目级别的解决方案。