我目前正在编写一些自定义控件,并且我想在我的样式中访问此颜色,因此当用户更改颜色时,我的应用程序强调会相应地重新着色。
我找不到在我的XAML中获取此颜色的方法。 期望有一个系统级别的动态笔刷或颜色资源可供引用。
是否有人有任何想法?
我目前正在编写一些自定义控件,并且我想在我的样式中访问此颜色,因此当用户更改颜色时,我的应用程序强调会相应地重新着色。
我找不到在我的XAML中获取此颜色的方法。 期望有一个系统级别的动态笔刷或颜色资源可供引用。
是否有人有任何想法?
根据MSDN上的 这个帖子(将开始屏幕背景作为我的Metro应用程序背景) - 这是不可用的。
万一MSDN主题消失,网站暂时不可用,或Microsoft移动目录结构并在各个地方留下孤立的链接:来自Microsoft员工Rob Kaplan的相关答案如下:
Metro样式的应用程序无法查询开始屏幕的背景颜色。
因此,可以将其解释为官方回复,该功能不可用。
Alan,
我同意你的看法,如果您计划使用复杂的图形叠加,则“品牌化”概念是有意义的。但是,在您的应用程序中使用由操作系统提供的静态主题刷获取基本主题颜色是更好的选择。用户选择了这种颜色,因为他们认为它很舒适。更重要的是,某些用户可能对一种或多种颜色色盲,并选择最佳选项以增强可读性和易用性。
拥有标准颜色方案可使您保持浅色/深色主题,并满足许多公司对所有视觉障碍者所需程序的辨识度标准。
SDK处于起步阶段,当前实现可能已省略此重要功能,因为它尚未准备好发布SDK(颜色可能尚未最终确定,或某些设备上的主题兼容性仍在开发中)。
从给定的主题刷(例如ProgressBarForegroundThemeBrush)中推导出主题颜色并不太困难,只需添加/减去值即可获得当前主题颜色。
我的建议是尽可能遵循主题样式,以确保您的应用程序无论操作系统如何更改都能保持最新。
我自2010年5月以来一直是Windows Phone程序员。
在UxTheme.dll中有一些未记录的API可以检索主题颜色。如果您使用这些函数并将应用程序提交到Windows商店,则会失败认证,而且通常依赖于未记录的函数是一个不好的选择。但对于那些有兴趣获取这些值的人,我写了关于该过程的文章。