如何更改弹出菜单中所选项目的颜色?

2024-04-10

我已经设置了背景颜色和文本颜色以及一些其他颜色属性,例如禁用和未选择的颜色,但似乎都没有更改所选项目的背景颜色。

如果我必须更改以下属性才能使其看起来像我想要的那样?或者我需要在我的代码中添加什么?

我有以下内容:

<Shell xmlns="http://xamarin.com/schemas/2014/forms" 
       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
       Title="Example"
       x:Class="TrackBus.AppShell"
       FlyoutHeaderBehavior="CollapseOnScroll"
       FlyoutBackgroundColor="{StaticResource Primary}">

    <Shell.Resources>
        <ResourceDictionary>
            <Style x:Key="BaseStyle" TargetType="Element">
                <Setter Property="Shell.BackgroundColor" Value="{StaticResource Primary}" />
                <Setter Property="Shell.ForegroundColor" Value="White" />
                <!--Foreground is the menu icon color-->
                <Setter Property="Shell.TitleColor" Value="White" />
                <Setter Property="Shell.DisabledColor" Value="Magenta" />
                <Setter Property="Shell.UnselectedColor" Value="Cyan" />
            </Style>
            <Style TargetType="FlyoutItem" BasedOn="{StaticResource BaseStyle}" />

 <Style Class="FlyoutItemLabelStyle" TargetType="Label">
                <Setter Property="TextColor" Value="Cyan"></Setter>
            </Style>
            <Style Class="FlyoutItemLayoutStyle" TargetType="Layout" ApplyToDerivedTypes="True">
                <Setter Property="BackgroundColor" Value="Magenta"></Setter>
                <Setter Property="VisualStateManager.VisualStateGroups">
                    <VisualStateGroupList>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal">
                                <VisualState.Setters>
                                    <Setter Property="BackgroundColor" Value="{StaticResource Secondary}" />
                                    <Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="Blue"/>
                                </VisualState.Setters>
                            </VisualState>
                            <VisualState x:Name="Selected">
                                <VisualState.Setters>
                                    <Setter Property="BackgroundColor" Value="{StaticResource SecondaryLight}" />
                                </VisualState.Setters>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateGroupList>
                </Setter>
            </Style>

<Style Class="MenuItemLayoutStyle" TargetType="Layout" ApplyToDerivedTypes="True">
                <Setter Property="VisualStateManager.VisualStateGroups">
                    <VisualStateGroupList>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal">
                                <VisualState.Setters>
                                    <Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="{StaticResource SecondaryLight}" />
                                </VisualState.Setters>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateGroupList>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Shell.Resources>


<Shell.ItemTemplate>
        <DataTemplate>
            <Grid ColumnDefinitions="60,Auto">
                <Image Source="{Binding FlyoutIcon}"
                       Margin="5"
                       HeightRequest="35" />
                <Label Grid.Column="1"
                       Text="{Binding Title}"
                       VerticalTextAlignment="Center"
                       FontSize="Title"
                       TextColor="{StaticResource SecondaryLight}" />
            </Grid>
        </DataTemplate>
    </Shell.ItemTemplate>

    <Shell.MenuItemTemplate>
        <DataTemplate>
            <Grid ColumnDefinitions="60,Auto">
                <Image Source="{Binding Icon}"
                       Margin="5"
                       HeightRequest="35" />
                <Label Grid.Column="1"
                       Text="{Binding Text}"
                       VerticalTextAlignment="Center"
                       FontSize="Title"
                       TextColor="{StaticResource SecondaryLight}"/>
            </Grid>
        </DataTemplate>
    </Shell.MenuItemTemplate>

Primary是深蓝色的并且二次光是黄色的

目前我有这个:

我希望它看起来像这样:


我们需要重写FlyoutItemLayoutStyle ,MenuItemLayoutStyle 并修改其中的值CommonStates and Selected .

<Style Class="FlyoutItemLayoutStyle" TargetType="Layout" ApplyToDerivedTypes="True">
    <Setter Property="VisualStateManager.VisualStateGroups">
        <VisualStateGroupList>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal">
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="Transparent" />
                        <Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="Orange" />
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="Selected">
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="Orange" />
                        <Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="Black" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateGroupList>
    </Setter>
</Style>

<!--
Custom Style you can apply to any Flyout Item
-->
<Style Class="MenuItemLayoutStyle" TargetType="Layout" ApplyToDerivedTypes="True">
    <Setter Property="VisualStateManager.VisualStateGroups">
        <VisualStateGroupList>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal">
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="Transparent" />
                        <Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="Orange" />
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="Selected">
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="Orange" />
                        <Setter TargetName="FlyoutItemLabel" Property="Label.TextColor" Value="Black" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateGroupList>
    </Setter>
</Style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改弹出菜单中所选项目的颜色? 的相关文章

随机推荐

  • Python:如何将数据帧字典转换为一个大数据帧,其中列名是前一个字典的键?

    所以我的数据框是由许多单独的 Excel 文件组成的 每个文件都以日期作为文件名 并在电子表格中显示当天水果的价格 因此电子表格看起来像这样 15012016 Fruit Price Orange 1 Apple 2 Pear 3 1601
  • 为什么在音频标签内使用源标签会阻止 loaddata 事件触发?

    为了更好的可访问性 我们需要第二组替代的播放 暂停控件和 在用户 Kento Nishi 的帮助下 我们成功搬离DEMO A https jsfiddle net j5oxhq38 只有 1 个音频播放控件 DEMO B https jsf
  • 在 selenium 中将页面向上滚动到顶部

    如何将网页滚动到页面顶部 我知道将页面滚动到底部是 window scrollTo 0 document body scrollHeight 就像这样可以将页面滚动到顶部吗 要滚动到页面顶部 只需滚动到0 0 window scrollTo
  • Jest + React-testing-library - 等待模拟的异步函数完成

    My componentDidMount 触发对异步函数的调用 但根据该函数的结果 它可能不会导致任何 DOM 更改 有什么方法可以等待该函数在测试中完成吗 这是一个示例 单击按钮最初被禁用 如果异步函数返回 true 则应启用单击按钮 m
  • Magento 多个 Authorize.net 网关

    我有一个用于处理信用卡付款的 CAD 和 USD 网关帐户 这两个帐户均来自支持 Authorize net API 的支付提供商 我已经使用 Magento 的内置 Authorize net 支持成功配置了一个 但是如何配置第二个 Au
  • 在终结器中抛出异常以强制执行 Dispose 调用:

    这是我认为推荐的典型 IDisposable 实现 SomeClass Dispose false public void Dispose GC SuppressFinalize this Dispose true protected vi
  • 使用 Youtube API 和 onBehalfOfContentOwner 的 CMS 频道列表

    我正在使用 Youtube Data API 进行有针对性的查询 就像这个例子 https developers google com youtube analytics v1 reference reports query 对于 MCN
  • Cassandra 备份,包括架构

    我感兴趣的备份技术有两种 a SCHEMA 备份 恢复数据库模式 添加或删除列 更改列类型 添加表等 b 数据备份 恢复数据 更新 从一个表读取到另一个表 让我通过例子来解释一下 首先 我创建实体 客户 Customer 编号 名称 11
  • 数据表:如何将类设置为表行单元格(但不是表头单元格!)

    我的桌子有一个非常漂亮的风格 抱歉 链接不再有效 我必须添加 sClass 以便新行 由 fnAddData 添加 获得正确的类 不幸的是 这破坏了我的布局 因为这些类也被添加到我的表头单元格中 抱歉 链接不再有效 如何配置 sClass
  • 为什么必须为方法引用显式指定类/对象名称?

    当我想引用当前范围内的方法时我仍然需要 指定类名 对于静态方法 或this before 操作员 例如 我需要写 import java util stream Stream public class StreamTest public s
  • 如何使用 Apache PDFBox 从 PDF 中的按钮图标提取图像?

    我想使用 java netbeans 从 pdf 中的按钮获取图像图标 并将其放在某个面板中 然而我在这里碰了砖头 我使用 PDFBox 作为我的 PDF 导出器 但我似乎理解不够 我已经成功地从表单字段中读取内容 但是只要我尝试在 PDF
  • 处理 SFSafariViewController 中的弹出窗口/选项卡

    我正在我的应用程序中实现 SoundCloud 登录流程 应用程序打开https soundcloud com connect in an SFSafariViewController with a redirect uri它使用我的应用程
  • Java 包结构中的模块与层

    我曾经把所有东西都放在这样的包中 com company app module1 com company app module2 但它使得基于包的 AOP 切入点变得困难 并导致需要 IDE 才能理解的巨大包 所以现在我意识到我需要一个更深
  • jqm 弹出窗口未打开

    我向 div 容器添加了一个弹出窗口 打开弹出窗口不起作用 这是我的容器结构 div div div style display none a class select Button a div ul ul div div
  • 为什么 Node.js 是异步的?

    实际上没有人问过这个问题 从我得到的所有 建议 以及我在这里问之前的搜索 那么为什么 Node js 是异步的呢 经过一番研究后我得出的结论是 像 PHP 和 Python 这样的语言是脚本语言 我可能对脚本语言的实际语言是错误的 而 Ja
  • auth.uid 是共享秘密吗?

    看来 当有人通过 oAuth 进行身份验证时 Firebase 会创建一个看起来像这样的 uidgoogle 111413554342829501512 例如 在 Firebase 规则中 您可以执行以下操作 读取和 或写入 read ro
  • Ember.js 在特定页面上包含外部脚本

    我试图弄清楚如何包含外部 javascript 源 图表 但仅限于网站上的单个页面 可以在视图或模板中完成吗 我发现只需添加页面模板不起作用 如果我将它添加到整个网站的模板中 它加载得很好 但是它会加载到每个页面上 我的问题的另一面可能更具
  • 如何使用“git submodule”查看子模块的特定版本?

    我该如何为特定标签或提交添加 Git 子模块 子模块存储库保持指向特定提交的分离 HEAD 状态 更改该提交只需检查不同的标签或提交 然后将更改添加到父存储库 cd submodule git checkout v2 0 Previous
  • .NET 4 中的 Math.Round() 行为[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中 Math Round 2 5 结果是 2 而不是 3 你在开玩笑吧 https stackoverflow com questions 977796 in c math round2 5
  • 如何更改弹出菜单中所选项目的颜色?

    我已经设置了背景颜色和文本颜色以及一些其他颜色属性 例如禁用和未选择的颜色 但似乎都没有更改所选项目的背景颜色 如果我必须更改以下属性才能使其看起来像我想要的那样 或者我需要在我的代码中添加什么 我有以下内容