windows phone 7 中怎样定义和使用资源(Resource)

9 篇文章 0 订阅
2 篇文章 0 订阅

1. 系统资源。

在wp7开发中可以看到很多使用系统资源(resource)的例子,例如默认的新page:

<TextBlock x:Name="PageTitle" Text="PageTitle" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

这里的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>
<System:Double x:Key="PhoneFontSizeExtraExtraLarge">72</System:Double>


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中使用资源

            <TextBlock x:Name="ApplicationTitle" Text="{StaticResource myString}" Foreground="{StaticResource myForceBrush}" Style="{StaticResource PhoneTextNormalStyle}"/>


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类中不可见

this.ApplicationBar.ForegroundColor = (Color)this.Resources["PhoneAccentColor"];





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值