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

12
在Windows 8消费者预览版中,您可以个性化您的体验,包括设置“背景颜色”,然后该颜色也用作所选瓷砖、应用栏等的背景。 因此,选择橙色将意味着在Windows 8 Metro UI中可见橙色强调。

我目前正在编写一些自定义控件,并且我想在我的样式中访问此颜色,因此当用户更改颜色时,我的应用程序强调会相应地重新着色。

我找不到在我的XAML中获取此颜色的方法。 期望有一个系统级别的动态笔刷或颜色资源可供引用。

是否有人有任何想法?

3个回答

7

根据MSDN上的 这个帖子(将开始屏幕背景作为我的Metro应用程序背景) - 这是不可用的。

万一MSDN主题消失,网站暂时不可用,或Microsoft移动目录结构并在各个地方留下孤立的链接:来自Microsoft员工Rob Kaplan的相关答案如下:

Metro样式的应用程序无法查询开始屏幕的背景颜色。

因此,可以将其解释为官方回复,该功能不可用。


1
很不幸,鉴于WP7允许您获取用户的强调颜色。 - Alan
1
我认为对于大多数应用程序来说,独立于操作系统定义主题可能更好。这样做更容易 - 您不必担心您的应用程序设计支持多个主题,这涉及检查主题并提供与每个主题匹配的资源。想象一下,您需要提供与所有可能的主题以及尚未进行测试的未来主题相匹配的图标或背景。此外 - 这对于品牌营销您的应用程序可能更好。然后,也许微软不希望人们认为您的应用程序是操作系统的一部分... - Filip Skakun
根据UI平台的程序经理Tim Heuer所说,“很抱歉,这不是Windows 8.1中可访问的颜色”,该颜色仍然无法使用。(http://social.msdn.microsoft.com/Forums/en-US/9a200123-45cd-4f14-8ab7-f997e0534495/using-windows-accent-color?forum=w81prevwCsharp) - Rowland Shaw
这在Windows 10中是可访问的。 - Jerry Nixon

5

Alan,

我同意你的看法,如果您计划使用复杂的图形叠加,则“品牌化”概念是有意义的。但是,在您的应用程序中使用由操作系统提供的静态主题刷获取基本主题颜色是更好的选择。用户选择了这种颜色,因为他们认为它很舒适。更重要的是,某些用户可能对一种或多种颜色色盲,并选择最佳选项以增强可读性和易用性。

拥有标准颜色方案可使您保持浅色/深色主题,并满足许多公司对所有视觉障碍者所需程序的辨识度标准。

SDK处于起步阶段,当前实现可能已省略此重要功能,因为它尚未准备好发布SDK(颜色可能尚未最终确定,或某些设备上的主题兼容性仍在开发中)。

从给定的主题刷(例如ProgressBarForegroundThemeBrush)中推导出主题颜色并不太困难,只需添加/减去值即可获得当前主题颜色。

我的建议是尽可能遵循主题样式,以确保您的应用程序无论操作系统如何更改都能保持最新。

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


2

在UxTheme.dll中有一些未记录的API可以检索主题颜色。如果您使用这些函数并将应用程序提交到Windows商店,则会失败认证,而且通常依赖于未记录的函数是一个不好的选择。但对于那些有兴趣获取这些值的人,我写了关于该过程的文章


除此之外,我制作了一个参考表格,其中包含在Windows 8中发现的主题颜色。链接 - Quppa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接