模板 10 HamburgerMenu 和 PageHeader 背景色

Template 10 HamburgerMenu and PageHeader background color

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

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

在Custom.xaml资源字典中,如果我在"Light"资源字典中注释掉针对PageHeader控件的样式,几乎可以在header的右侧部分达到我想要的效果] 但不在汉堡 header.

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

导航区域的背景颜色不是继承的,而是在 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>

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

至于钢蓝色,这款来自HamburgerMenu(definition of the header in the source)的HamburgerBackground属性。您可以按照我上面演示的相同方式覆盖颜色。

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

定义的相同颜色

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