1

例如,使用 Light Theme 意味着 back 和 appbar 按钮是黑色的。但是,当使用较暗的应用栏颜色时,按钮的对比度会很明显。这是一个屏幕抓取,忽略白色的质量。http://i.imgur.com/2EzSd.png

有没有办法直接访问导致一个主题图标与另一个主题图标的样式?

注意:我正在构建一个 C# + XAML 应用程序。

4

4 回答 4

3

作为开始,按钮看起来有点像这样:

开始

在 StandartStyles.xml 下,您必须先查找样式AppBarButtonStyle以更改图标颜色查找<Setter Property="Foreground" Value="{StaticResource AppBarItemForegroundThemeBrush}"/>

现在你用{StaticResource AppBarItemForegroundThemeBrush}你想要的颜色替换你可以同时使用white#FFFFFFFF。现在你已经改变了你的图标的视觉效果,你应该有这样的东西

在此处输入图像描述

现在您需要设置下面的文本样式,方法是在下面</TextBlock几行找到标记并在那里更改 forground 属性

第二步

现在您有了一个漂亮的图标,但是一旦您将鼠标悬停在它上面,它就会变得安静而丑陋。为了改变不同的状态,向下移动到<VisualStateGroup x:Name="CommonStates">标签这里你会发现一个标签<VisualState x:Name="PointerOver">,因为当你将鼠标悬停在它上面时,你可能会怀疑这会改变按钮的属性。

    <VisualState x:Name="PointerOver">
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground">
    <!-- the background of the actionbar-> !--><DiscreteObjectKeyFrame KeyTime="0" Value="yourBackgroundColor"/> 
                                    </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground">
    <!-- the icon of the actionbar-> --><DiscreteObjectKeyFrame KeyTime="0" Value="yourActionBarIconColor"/> 
                                    </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </VisualState>

如果你继续向下滚动,你会发现<VisualState x:Name="Pressed">等等。

于 2013-01-08T20:33:30.813 回答
0

您可以通过在 Visual Studio 中展开项目下的 References 节点,然后展开Windows Library for JavasScript 1.0节点和css文件夹来查看每个主题使用的 CSS。

AppBar 颜色的相关行似乎从我ui-dark.css文件的第 2621 行开始。此外,第 2448 行指定了.win-commandimage项目的颜色,这是大多数 appbar 命令的图标。您应该能够在项目的样式表中覆盖这些设置。

于 2012-09-26T21:25:52.883 回答
0

每个主题的应用栏按钮的颜色被定义为您可以覆盖的资源。我在Windows 8 – Overriding Metro app resources中描述了该过程。

因为您的方法应该足够简单,以获取 Light App Bar 按钮资源并使用它们覆盖 Dark 资源。

于 2012-09-27T01:09:39.510 回答
0

事实证明,Windows 8 只使用了前景色(它继承自选定的主题样式)。

这意味着您需要做的就是设置前景以更改图标颜色,赢家!

于 2012-09-26T21:52:40.670 回答