【问题标题】:What is the themeResource for window's title text color?窗口标题文本颜色的 themeResource 是什么?
【发布时间】:2016-07-01 19:08:13
【问题描述】:

此标题栏文本颜色根据当前选择的系统颜色在黑色和白色之间变化(深色背景上的白色文本和浅色背景上的黑色文本)

那个颜色的ThemeResource 是什么?

我有一个将background 设置为SystemControlBackgroundAccentBrush 的按钮,我希望根据当前选择的重音来调整foreground(字体颜色)。


我试过SystemControlForegroundAccentBrush,但似乎这个和SystemControlBackgroundAccentBrush 是相同的颜色(而且我没有更改系统设置中的任何内容)。

【问题讨论】:

  • 这不能同时是 WPF 和 UWP

标签: c# uwp


【解决方案1】:

没有一个刷子可以解决问题。

避免使用强调色作为背景,尤其是文本和图标。因为强调色可以改变,如果你必须使用它作为背景,你必须做一些额外的工作来确保前景文本易于阅读。 (来源:UWP Style Guide

基于他们在文档中建议使用的示例算法,这应该可以解决问题:

private void UpdateAccentColorForeground(FrameworkElement element)
{
    var uiSettings = new UISettings();
    Color c = uiSettings.GetColorValue(UIColorType.Accent);

    element.RequestedTheme = ((5 * c.G + 2 * c.R + c.B) <= 8 * 128)
        ? ElementTheme.Light
        : ElementTheme.Dark;
}

【讨论】:

    【解决方案2】:

    我认为您正在寻找的是SystemColorWindowTextColor。这将链接到文本的当前系统前景色。

    您可以在MSDN site here找到完整列表

    【讨论】:

    • 该特定颜色用于 HighContrast 主题。您不应该弄乱该颜色,因为它会对具有各种可访问性需求的用户产生巨大的负面影响。
    • @DavidGrochocki 我认为您误解了这个问题。他说的是覆盖那种颜色。如果您覆盖颜色,则用户设置的颜色无关紧要。这不是一个坏习惯。这通常用于企业品牌风格的应用程序。
    • "有一组从 Windows 系统调色板派生的颜色值...许多 XAML 画笔资源在系统运行(并且应用程序正在运行)使用“HighContrast”时使用这些颜色主题...键遵循命名格式:SystemColor[name]Color。” SystemColorWindowTextColor 是其中一种颜色值,它仅适用于“HighContrast”主题,因此不应被覆盖。 (来源:Docs
    • @DavidGrochocki OP 没有询问微软指南是什么。 OP询问如何使用密钥进行更改。如果微软不打算让任何人覆盖它,他们就不应该暴露它。
    • 这与是否遵循指南无关。你的提议根本行不通(我刚试过)。 OP 想“根据当前选择的重音[调整] 前景(字体颜色)”。 OP 试图通过尝试覆盖一个键来做到这一点。如果您想要一种强调感知的前景色(即深色强调色上的浅色文本和浅色强调色上的深色文本),则无法使用单一颜色定义来做到这一点。即使是这样,也不会通过覆盖影响使用 HighContrast 主题的用户的颜色。
    猜你喜欢
    • 2016-05-08
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多