天天看點

windows phone 7 中怎樣定義和使用資源(Resource)1. 系統資源。2. 自定義資源3. Xaml中使用資源4. MainPage.Xaml.cs檔案中使用資源

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類中不可見

繼續閱讀