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}

继承父样式以后,可以直接使用父样式中的定义,如果有重复的定义,子样式会覆盖父样式的内容


  

原文地址:https://www.cnblogs.com/zjypp/p/2339321.html