1. 系統資源。
在wp7開發中可以看到很多使用系統資源(resource)的例子,例如預設的新page:
這裡的PhoneTextTitle1Style便是資源。
系統的資源定義在這裡:C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Design , 根據安裝路徑不同,這個路徑有一些差異。
這個路徑下有DarkBlue、DarkBrown、LightBlue等檔案夾,分别對應手機上標明的主題色+高亮色。
DarkBlue為例,.\DarkBlue\ThemeResources.xaml 中PhoneTextTitle1Style是這樣定義的:
<Style x:Key="PhoneTextTitle1Style" TargetType="TextBlock" BasedOn="{StaticResource PhoneTextBlockBase}">
<Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiLight}"/>
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeExtraExtraLarge}"/>
</Style>
PhoneFontFamilySemiLight 和 PhoneFontSizeLarge 的定義
<FontFamily x:Key="PhoneFontFamilySemiLight">Segoe WP SemiLight</FontFamily>
2. 自定義資源
資源可以定義在3個地方:Page.xaml, App.xaml 及單獨的資源辭典檔案中。
3個地方定義沒什麼差别,這是使用時存在細微差别。
以頁面中定義為例子:
<phone:PhoneApplicationPage.Resources>
<Color x:Key="myForce" >Red</Color>
<Color x:Key="myBack" >GreenYellow</Color>
<system:String x:Key="myString" >12345</system:String>
<SolidColorBrush x:Key="myForceBrush" Color="Orange" />
<SolidColorBrush x:Key="myBackBrush" Color="{StaticResource myBack}" />
</phone:PhoneApplicationPage.Resources>
system是命名空間,要使用它需要在前面加上一行
xmlns:system="clr-namespace:System;assembly=mscorlib"
3. Xaml中使用資源
4. MainPage.Xaml.cs檔案中使用資源
if (this.ApplicationBar == null)
{
this.ApplicationBar = new ApplicationBar();
this.ApplicationBar.MenuItems.Add(new ApplicationBarMenuItem() { Text = "Menu1" });
}
this.ApplicationBar.BackgroundColor = (Color)this.Resources["myBack"];
this.ApplicationBar.ForegroundColor = (Color)Application.Current.Resources["PhoneAccentColor"];
其實"PhoneAccentColor"可以通過this.Resources 加載到,但反之不行,因為資源"myBack"是定義在Page中的,Application類中不可見