Xamarin.Forms Shell 页面中的自定义 TitleView顶部栏 部分

问题描述

我正在尝试创建自定义 TitleView(Shell 页面的顶部栏,汉堡图标菜单所在的位置)。现在,在设计中,我在该区域有一些元素 - 通知铃、信息按钮和带有名称用户图像。但是,作为 xamarin.forms 的 Xamarin.Forms 不允许轻松覆盖此元素。

我将如何为其创建自定义控制器?我可以为条目、标签、文本编辑器等执行此操作,但我尝试过的任何内容都不适用于 TitleView。

下面是当前状态的图像(我什至不能改变汉堡包图标的颜色,每个 png 都变成白色,哈哈)

Current state

以及我希望实现的目标:

Desired outcome

我非常感谢有关如何创建此自定义渲染器的任何指示和解释。谢谢大家!

解决方法

查看官方文档,了解如何在 Shell 应用程序中自定义 TitleView:

Xamarin.Forms Shell pages - Documentation

部分

1 - 设置页面颜色

  • ForegroundColor,属于 Color 类型,用于定义文本和图标的阴影颜色。

2 - 在导航栏中显示视图

Shell.TitleView 附加属性,属于 View 类型,可启用任何 View 显示在导航栏中。

虽然可以在子类 Shell 对象上设置此属性,但它可以 也可以在想要在导航中显示视图的任何页面上设置 酒吧。例如,以下 XAML 显示在 ContentPage 的导航栏:

您可以在 TitleView 中添加 ImageButtons 并使用 XamarinCommunityToolkit 中的 IconTintColorEffect 来更改图标的颜色:

https://github.com/xamarin/XamarinCommunityToolkit/blob/main/samples/XCT.Sample/Pages/Effects/IconTintColorEffectPage.xaml

, 当您想要更改/覆盖元素的行为方式时,建议使用

自定义控制器。您需要做的是自定义标题视图,您可以像自定义视图中的内容一样轻松定义该元素。

您需要做的就是:

<!-- YOUR XAML -->
<NavigationPage.TitleView>
   <Grid>
      <!-- YOUR CONTENT -->
   </Grid>
</NavigationPage.TitleView>

我想说的是,您可能会严格控制导航栏的高度,您需要遵守一些限制。

如果您需要某种模板来在多个位置重复使用此标题栏,那么您可能需要一个控制模板

您可能会访问这些链接:

Displaying views in the navigation bar

Control Templates in Xamarin Forms