WP7]用于主题感知的动态颜色或如何在App.xaml中为自定义资源中的属性定义动态值?

时间:2010-10-15 21:11:10

标签: silverlight windows-phone-7

我正在为Windows Phone 7制作一个应用程序(使用Visual Studio 2010 Express for Windows Phone RTM),我在主题(亮/暗)意识方面遇到了一些问题,尤其是颜色问题。

基本上我想在使用静态资源颜色/画笔时做同样的事情。 例如,如果我声明:

<Border Background="{StaticResource PhoneBackgroundBrush}" />

边框的黑色背景为黑色主题,白色为浅色主题。 所以,我想要一个资源...让我们说MyBackgroundBrush,并将使用如下:

<Border Background="{StaticResource MyBackgroundBrush}" />

而且,对于黑暗主题它可能是蓝色的,而对于光来说则是红色。

所以我的问题是,我如何定义这样的资源和行为?

1 个答案:

答案 0 :(得分:1)

question about theme detection。这将为您提供一种检测主题的方法,然后通过在应用程序的资源中替换它来使用该信息来设置背景画笔:

App.Current.Resources.Remove("MyPhoneBrush");
App.Current.Resources.Add("MyPhoneBrush", value);

您可以使用xaml中的名称定义两个彩色画笔,然后将其中一个设置为MyPhoneBrush的运行时值。你可能想把它们中的一个设置为默认值,所以事情也在设计时工作......