我试图在Windows 10中覆盖一些样式颜色,但我无法让它工作。
我的app.xaml看起来像这样:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml"/>
</ResourceDictionary.MergedDictionaries>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default" Source="Theme.xaml"/>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Application.Resources>
我的Theme.xaml看起来像这样
<ResourceDictionary
x:Key="Default"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="ListBoxBackgroundThemeBrush" Color="Transparent" />
<SolidColorBrush x:Key="ListBoxFocusBackgroundThemeBrush" Color="Transparent" />
<SolidColorBrush x:Key="ListBoxItemPressedBackgroundThemeBrush" Color="Transparent" />
<SolidColorBrush x:Key="ListBoxItemSelectedForegroundThemeBrush" Color="Transparent" />
<SolidColorBrush x:Key="ListBoxItemSelectedBackgroundThemeBrush" Color="Transparent" />
<SolidColorBrush x:Key="FocusVisualBlackStrokeThemeBrush" Color="Transparent" />
<SolidColorBrush x:Key="ScrollBarButtonForegroundThemeBrush" Color="Red" />
<SolidColorBrush x:Key="ScrollBarPanningBackgroundThemeBrush" Color="Red" />
<SolidColorBrush x:Key="ButtonPressedBackgroundThemeBrush" Color="White"/>
<SolidColorBrush x:Key="SearchBoxHitHighlightSelectedForegroundThemeBrush" Color="Red"/>
<SolidColorBrush x:Key="SearchBoxHitHighlightForegroundThemeBrush" Color="Pink"/>
然而它不起作用,它不会覆盖任何地方的风格。
答案 0 :(得分:6)
您设置的样式适用于Windows 8应用。通用Windows应用程序使用的样式大大简化。
找到它们的最简单方法是将ListBox添加到页面中,在设计器中右键单击它,然后选择编辑模板...创建模板的副本并查看使用的名称。
现在所有控件都尽可能使用相同的画笔而不是特定于控件的画笔。
例如,ListBox使用以下画笔作为其前景,背景和BorderBrush:
答案 1 :(得分:3)
为了增加Rob的答案,对于那些寻求更广泛的应用范围响应的人来说,它帮助我找到了完整的默认主题,可以在
安装了Windows SDK的\(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic folder
,位于themeresources.xaml中。
这是Default,HighContrast和Light的ResourceDictionary。默认键处理UWP中的Dark主题,因为当没有找到默认的“Dark”ResourceDictionary时,它将默认为默认值。
Default和Light 主题有近1000种特定于控件的颜色,或者像Rob所示的更通用的“SystemControlForeground ...”颜色,但在UWP中,它们大多基于以下25种颜色类别:
SystemAccentColor
,一种操作系统范围内的用户定义颜色,UWP docs在Design&amp; amp; UI&gt;风格&gt;颜色
SystemAccentColorLight1
,...Dark1
等),但它们未在默认资源字典中使用。然而.6,.8和.9这种颜色的不透明度被使用了几次,这是唯一一次使用不透明度。然后还有来自Windows 8.1的300多种颜色类别,它们会手动选择一种特定颜色,您可以看到here
的范围。上述唯一的例外是InkToolBar样式几乎完全来自高对比度颜色。
高对比度主题,大量来自8个额外的系统[空白]颜色,类似于SystemAccentColor
,是操作系统范围的值。如果他们选择了高对比度主题,则它们由模板和/或用户定义,这是Windows 10在其个性化设置中的选项。高对比度也是一种可访问性功能,因此我认为无论应用程序品牌如何,我都会避免覆盖ResourceDictionary。
但实际上,通过覆盖XAML框架中的SystemAccentColor
和24系统[空白]颜色,您可以在应用程序中以一致的方式更改数百种特定颜色选择。