如何访问当前主题颜色

本文关键字:颜色 何访问 访问 | 更新日期: 2023-09-27 18:32:40

我有一个Windows Phone 8应用程序,可以在WebBrowser控件中呈现一些HTML(来自RSS/Atom源)。为了使这个HTML看起来更原生,我通过一个简单的动员器运行它,通过重写HTML结构和设置一些CSS使布局,字体,图像等看起来更原生。

这工作正常。但是,我想确保动员者生成的CSS将用户当前主题中的颜色应用于背景,文本,链接等。虽然我可以在 XAML 文档中应用主题颜色,但我还没有找到从 C# 获取这些颜色的方法。这可能吗?如果是这样,如何?

如何访问当前主题颜色

您可以获得此处所示的主题色。

// Determine the accent color.
Color currentAccentColorHex = (Color)Application.Current.Resources["PhoneAccentColor"];

这不是获取颜色名称的最漂亮的方法,如果这是你想要的,但你可以使用它与WP7和WP8兼容。

string currentAccentColor = "";
switch (currentAccentColorHex.ToString())
{
    case "#FF1BA1E2": currentAccentColor = "blue"; break;
    case "#FFA05000": currentAccentColor = "brown"; break;
    case "#FF339933": currentAccentColor = "green"; break;
    case "#FFE671B8": currentAccentColor = "pink"; break;
    case "#FFA200FF": currentAccentColor = "purple"; break;
    case "#FFE51400": currentAccentColor = "red"; break;
    case "#FF00ABA9": currentAccentColor = "teal (viridian)"; break;
    // Lime changed to #FFA2C139 in Windows Phone OS 7.1.
    case "#FF8CBF26": 
    case "#FFA2C139": currentAccentColor = "lime"; break;
    // Magenta changed to # FFD80073 in Windows Phone OS 7.1.
    case "#FFFF0097": 
    case "#FFD80073": currentAccentColor = "magenta"; break;
    // #FFF9609 (previously orange) is named mango in Windows Phone OS 7.1.
    case "#FFF09609": currentAccentColor = "mango (orange)"; break;
    // Mobile operator or hardware manufacturer color
    default: currentAccentColor = "custom eleventh color"; break;
}
// Write the current accent color.
textBlock2.Text = "accent color = " + currentAccentColor;