我不想在我的应用程序中使用用户在Windows中选择的强调颜色,而是想显示自己的颜色。我可以通过创建新样式手动更改所有项目上的颜色,但通常控件中有许多地方需要更改,因此在应用程序级别上进行更改会更好。
我尝试设置<SolidColorBrush x:Key="SystemAccentColor" Color="#FFCB2128" />
,但由于某种原因,它无法在某些项目上起作用,并将其他项目(如视频控件)变为灰色。
我不想在我的应用程序中使用用户在Windows中选择的强调颜色,而是想显示自己的颜色。我可以通过创建新样式手动更改所有项目上的颜色,但通常控件中有许多地方需要更改,因此在应用程序级别上进行更改会更好。
我尝试设置<SolidColorBrush x:Key="SystemAccentColor" Color="#FFCB2128" />
,但由于某种原因,它无法在某些项目上起作用,并将其他项目(如视频控件)变为灰色。
SystemControlHighlightAccentBrush
。您可以按照以下方式覆盖它。<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<SolidColorBrush x:Key="SystemControlHighlightAccentBrush" Color="Orange" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="SystemControlHighlightAccentBrush" Color="Green" />
</ResourceDictionary>
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="SystemControlHighlightAccentBrush" Color="Blue" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
要更改每个系统控件的强调颜色,您需要重新定义系统资源,如下所示。
请注意,SystemAccentColor
是一种颜色,而不是刷子。如果您不重新定义所有其他刷子,颜色将不会应用于所有内容。
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<Color x:Key="SystemAccentColor">#FF20A060</Color> <!--Your accent color-->
<SolidColorBrush x:Key="SystemControlBackgroundAccentBrush" Color="{ThemeResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlDisabledAccentBrush" Color="{ThemeResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlForegroundAccentBrush" Color="{ThemeResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlHighlightAccentBrush" Color="{ThemeResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlHighlightAltAccentBrush" Color="{ThemeResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlHighlightAltListAccentHighBrush" Color="{ThemeResource SystemAccentColor}" Opacity="0.9" />
<SolidColorBrush x:Key="SystemControlHighlightAltListAccentLowBrush" Color="{ThemeResource SystemAccentColor}" Opacity="0.6" />
<SolidColorBrush x:Key="SystemControlHighlightAltListAccentMediumBrush" Color="{ThemeResource SystemAccentColor}" Opacity="0.8" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentHighBrush" Color="{ThemeResource SystemAccentColor}" Opacity="0.9" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentLowBrush" Color="{ThemeResource SystemAccentColor}" Opacity="0.6" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentMediumBrush" Color="{ThemeResource SystemAccentColor}" Opacity="0.8" />
<SolidColorBrush x:Key="SystemControlHyperlinkTextBrush" Color="{ThemeResource SystemAccentColor}" />
<SolidColorBrush x:Key="ContentDialogBorderThemeBrush" Color="{ThemeResource SystemAccentColor}" />
<SolidColorBrush x:Key="JumpListDefaultEnabledBackground" Color="{ThemeResource SystemAccentColor}" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
SystemAccentColor
就足够了,其余将会相应地应用...也许自最近的更新以来是这样的? - David Medenjak<Color x:Key="SystemAccentColor">#00FF00</Color>
,并且一切都变成了绿色,就像描述的那样。
也许你只是为一个主题设置了颜色,而它在其他地方被覆盖了?或者它确实取决于某个版本。 - David Medenjak<ResourceDictionary>
<Color x:Key="SystemAccentColor">#FFCB2128</Color>
</ResourceDictionary>
<Color x:Key="SystemAccentColor">#FFCB2128</Color>
<SolidColorBrush x:Key="SystemAccentColor" Color="#FFCB2128" />
<Color x:Key="SystemAltHighColor">#FFCB2128</Color>
<Color x:Key="SystemAltLowColor">#FFCB2128</Color>
<Color x:Key="SystemAltMediumColor">#FFCB2128</Color>
<Color x:Key="SystemAltMediumHighColor">#FFCB2128</Color>
<Color x:Key="SystemAltMediumLowColor">#FFCB2128</Color>
<Color x:Key="SystemBaseHighColor">#FFCB2128</Color>
<Color x:Key="SystemBaseLowColor">#FFCB2128</Color>
<Color x:Key="SystemBaseMediumColor">#FFCB2128</Color>
<Color x:Key="SystemBaseMediumHighColor">#FFCB2128</Color>
<Color x:Key="SystemBaseMediumLowColor">#FFCB2128</Color>
对于想要使用C#进行编程的人,以下是方法:
在App.cs文件中,在OnLaunched方法中添加以下代码:
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
//Use Argb values
Application.Current.Resources["SystemAccentColor"] = Color.FromArgb(100, 100, 100, 100);
//Use predefined colors
Application.Current.Resources["SystemAccentColor"] = Colors.Black;
//Rest of the code
...
}