博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WP7 Dev 101 【8】 系统的Theme

Posted on 2011-03-08 10:14  星尘的天空  阅读(287)  评论(0编辑  收藏  举报

转载地址:http://www.gwewe.com/dev/topics/1101151814.html 

为了保持用户体验的一致性,Windows Phone 7不再像以前Windows Mobile系统那样给用户提供多种多样的风格主题。但是它依然可以设置一些最基本的背景颜色风格等。

  从Windows Phone 7的主界面向左滑动到应用程序列表,然后依次找到“Settings”->“theme”就可以切换当前的主体颜色风格。背景色可以选择Dark和Light,即黑色和白色。

而可选择的“Accent Color”有10种(MO和OEM还可以增加一种),该颜色是系统各个需要引起用户注意的地方的默认颜色,例如Tile的背景色,超链接的颜色等等。

对于这两种颜色,他们会自动应用到你的程序的相应位置,例如背景色,超链接等等。。。但是有时候你可能想要自行判断或者加以控制。例如,你想要根据当前的系统的主题背景色来修改界面上某些控件的展现那该怎么办呢?其实很简单,用如下代码就可以知道当前系统用的主题的背景色是什么:

  1. public static Theme GetTheme()
  2. {
  3. var visibility = (Visibility)Application.Current.Resources["PhoneLightThemeVisibility"];
  4. return (visibility == Visibility.Visible) ? Theme.Light : Theme.Dark;
  5. }
  6.  
  7. public enum Theme
  8. {
  9. Light,
  10. Dark,
  11. }

如果你想要知道当前的Accent颜色值也很简单,如果你要在XMAL中修改某些控件的颜色为Accent颜色的话只需要设置其Foreground就可以。

Code Snippet
  1. Foreground=”{StaticResource PhoneAccentBrush}

如果在C#代码中的话通过如下代码即可获得AccentBrush:

Code Snippet
  1. (Brush)Application.Current.Resources["PhoneAccentBrush"];

其实通过Resources可以取到所有系统默认的颜色值、字体设置等等内容。具体内容参见MSDN文章“Theme Resources for Windows Phone”。