模板10 HamburgerMenu和PageHeader背景颜色

时间:2017-10-29 20:17:07

标签: uwp template10

使用Live Property Explorer我可以看到HamburgerMenu控件的背景颜色是DimGray或#FF2B2B2B,具体取决于Light / Dark主题选择,但这些颜色从哪里继承它们的值?

我想使用相同的颜色作为PageHeader背景颜色而不是CustomColor(模板中默认使用SteelBlue)。

在Custom.xaml资源字典中,如果我在“Light”资源字典中注释掉了针对PageHeader控件的样式,该样式几乎对标题的右侧部分有所需的效果,但在Hamburger标题上没有。

        <!--<Style TargetType="controls:PageHeader">
            <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" />
            <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" />
        </Style>-->

light theme dark theme

1 个答案:

答案 0 :(得分:1)

导航区域背景的颜色不是继承的,但在Template10中编码如此。该属性的名称为NavAreaBackground,可以看到源代码中的定义here

如果你想改变这种颜色,你可以选择类似

的样式
<ResourceDictionary.ThemeDictionaries>
    <ResourceDictionary x:Key="Light">
        <Style TargetType="controls:HamburgerMenu" x:Key="HamburgerMenuStyle">
            <Setter Property="NavAreaBackground" 
                    Value="#FFFFFF" />
        </Style>
    </ResourceDictionary>
    <ResourceDictionary x:Key="Default">
        <Style TargetType="controls:HamburgerMenu" x:Key="HamburgerMenuStyle">
            <Setter Property="NavAreaBackground" 
                    Value="#000000" />
        </Style>
    </ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>

然后使用Style="{ThemeResource HamburgerMenuStyle}"引用HamburgerMenu中的样式。

对于钢蓝色,这个来自HamburgerMenu(definition of the header in the source)的HamburgerBackground属性。你可以用我在上面演示的方式覆盖颜色。

对于您已经发布了如何应用颜色的代码的PageHeader也是如此。现在只使用您为HamburgerBackground定义的相同颜色。

快速注意:如果其他样式属性也未在您的样式中定义,我曾经遇到过NavAreaBackground未应用的错误。不确定是否仍然如此。