WP7中资源和样式
WP7中中的资源概念比较泛化,我们这里说的资源主要是控件内同质化的属性
比如要对很多控件设置相同的颜色,字体大小,画刷等等属性,如果每个控件单独设置会有大量重复的工作,使用资源可以解决这个重复的问题,
也相当于html中的css的style样式。
但是在style的之前还有一个先决条件就是共享机制:资源resource。
1.资源
资源是共享的,很多类不能定义为资源,比如某些控件Textblock的单个实例是不允许多次使用的,因为在程序中他有唯一的Name,从UIElement派生的都不能共享成资源。
资源可以定义在Page页面级别上,在页面上可用,定义在App级别上,整个应用程序可用,定义的位置不同, 作用范围也不同
定义:
<phone:PhoneApplicationPage.Resources>
<LinearGradientBrush x:Key="brush">
<GradientStop Offset="0" Color="Pink"></GradientStop>
<GradientStop Offset="1" Color="SkyBlue"></GradientStop>
</LinearGradientBrush>
</phone:PhoneApplicationPage.Resources>
应用:
<HyperlinkButton NavigateUri="/Page1.xaml" Height="80" Foreground="{StaticResource brush}">GoToPage1</HyperlinkButton>
<Button x:Name="btn1" Click="btn1_Click" Content="Button1" Background="{StaticResource brush}"></Button>
在cs代码直接使用Resource["key"]来使用,记得要转换成相应的net对象。
可以使用X:key。也可以使用X:Name来定义资源。
不同的是,使用X:Name必须是唯一的,使用X:key在一个范围内必须唯一,但是在小范围之外是可以重复。
关键在cs代码方法如果是X:Name,可以直接把name当作cs的对象来使用,但是如果是key,必须使用this.Resources["brush"];来获得属性
2.样式Style
样式Style基本是为特定的元素类型分配的属性集合,除了有Key外,还有一个TargetType属性,设置作用的控件类型。
定义:
<Style x:Key="btnStyle" TargetType="Button">
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Setter Property="Foreground" Value="{StaticResource brush}"></Setter>
<Setter Property="Width" Value="400"></Setter>
</Style>
使用:
<Button x:Name="btn1" Click="btn1_Click" Content="Button1" Style="{StaticResource btnStyle}"></Button>
样式的继承使用Baseon={StaticResource btnStyle}
继承父样式以后,可以直接使用父样式中的定义,如果有重复的定义,子样式会覆盖父样式的内容