例如,使用 Light Theme 意味着 back 和 appbar 按钮是黑色的。但是,当使用较暗的应用栏颜色时,按钮的对比度会很明显。这是一个屏幕抓取,忽略白色的质量。http://i.imgur.com/2EzSd.png
有没有办法直接访问导致一个主题图标与另一个主题图标的样式?
注意:我正在构建一个 C# + XAML 应用程序。
例如,使用 Light Theme 意味着 back 和 appbar 按钮是黑色的。但是,当使用较暗的应用栏颜色时,按钮的对比度会很明显。这是一个屏幕抓取,忽略白色的质量。http://i.imgur.com/2EzSd.png
有没有办法直接访问导致一个主题图标与另一个主题图标的样式?
注意:我正在构建一个 C# + XAML 应用程序。
作为开始,按钮看起来有点像这样:
在 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">
等等。
您可以通过在 Visual Studio 中展开项目下的 References 节点,然后展开Windows Library for JavasScript 1.0
节点和css
文件夹来查看每个主题使用的 CSS。
AppBar 颜色的相关行似乎从我ui-dark.css
文件的第 2621 行开始。此外,第 2448 行指定了.win-commandimage
项目的颜色,这是大多数 appbar 命令的图标。您应该能够在项目的样式表中覆盖这些设置。
每个主题的应用栏按钮的颜色被定义为您可以覆盖的资源。我在Windows 8 – Overriding Metro app resources中描述了该过程。
因为您的方法应该足够简单,以获取 Light App Bar 按钮资源并使用它们覆盖 Dark 资源。
事实证明,Windows 8 只使用了前景色(它继承自选定的主题样式)。
这意味着您需要做的就是设置前景以更改图标颜色,赢家!