Windows 8主题颜色 - 以编程方式访问它

时间:2012-03-22 15:55:24

标签: xaml windows-8 windows-runtime windows-store-apps winrt-xaml

在Windows 8消费者预览中,您可以个性化您的体验,包括设置“背景颜色”,然后将其用作选定图块,应用栏等的背景。因此选择橙色将意味着在Windows中可以看到橙色重音8 Metro UI。

我目前正在创作一些自定义控件,我想在我的样式中访问这种颜色,因此当用户更改颜色时,我的应用程序重音会相应地重新着色。

我找不到在XAML中获取此颜色的方法。期望您可以引用系统级动态画笔或颜色资源似乎是合理的。

有没有人有任何想法?

3 个答案:

答案 0 :(得分:7)

基于MSDN上的this thread (Start Screen background as my metro apps background) - 这不可用。

如果MSDN线程消失,该站点暂时不可用,或者Microsoft移动目录结构并在整个地方留下孤立链接:来自Microsoft员工Rob Kaplan的相关答案说:

  

Metro风格应用无法查询开始屏幕背景颜色。

因此,可以将此功能视为官方回复。

答案 1 :(得分:5)

艾伦,

虽然我同意你的观点,如果你计划复杂的图形叠加,“品牌”概念很有意义,使用操作系统提供的静态主题画笔获取Windows Phone上可用的基本主题颜色是在您的应用中更好地选择基色主题。用户选择了该颜色,因为他们发现它令人赏心悦目。更重要的是,某些用户可能对一种或多种颜色色盲,并选择了最佳选项来增强可读性和可访问性。

通过访问标准配色方案,您可以保持明/暗主题,并满足许多公司对视障人士所有节目所要求的无障碍标准。

SDK还处于初期阶段,这个重要功能可能已被排除在当前实现之外,因为它尚未准备好发布SDK(颜色可能尚未最终确定或主题的兼容性设备仍在开发中。)

通过添加/减去值来获取当前主题颜色,从现有的主题画笔中获取主题颜色并不太难,例如ProgressBarForegroundThemeBrush。

我的建议是尽可能坚持主题样式,以确保无论操作系统如何变化,您的应用程序都将保持最新状态。

自2010年5月以来,我一直是Windows Phone程序员。

答案 2 :(得分:2)

UxTheme.dll中有一些未记录的API可以检索主题颜色。如果您使用这些功能并将您的应用程序提交到Windows应用商店,它将无法通过认证,并且通常无论如何都依赖于未记录的功能是一个坏主意。不过,对于那些有兴趣获得这些价值观的人来说,I wrote about the process