十,样式和行为

  1. 样式(Styles)是组织和重用格式化选项的重要工具。不是使用重复的标记填充XAML,以设置诸如边距、颜色及字体等细节,而可以创建一系列封装所有这些细节的样式。然后可以在需要之处通过一个属性应用样式。
    行为(behavior)是一个重用用户界面代码的工具,它封装了一些通用的UI功能。如果具有适当的行为,可以使用一两行XAML标记将其附加到一个元素,从而可以节省编写和调试代码的工作。
  2. 创建样式对象

    <Window.Resources>
        <Style x:Key="BigFontButtonStyle">
            <Setter Property="Control.FontFamily" Value="Times New Roman"></Setter>
            <Setter Property="Control.FontSize" Value="20"></Setter>
            <Setter Property="Control.FontWeight" Value="Bold"></Setter>
        </Style>
    </Window.Resources>

    上面的标记创建了一个独立的资源:一个System.Windows.Style对象,与所有资源一样,样式对象有一个键名,从而当需要时可以从集合中提取它,根据约定,用于样式的键名通常以Style结尾。样式通过元素的Style属性(该属性是在FrameworkElement基类中定义的)插入到元素中,如下所示为按钮使用了以上定义的样式:

    <Button Style="{StaticResource BigFontButtonStyle}">A Button For My Test</Button>

    也可以使用代码设置样式,就是使用FindResources()方法从最近的资源集合中提取样式:

    btnStyleTest1.Style = (Style)btnStyleTest1.FindResource("BigFontButtonStyle");

    样式设置元素的初始外观,但是可以随意覆盖它们设置的这些特性。例如,如果应用了BigFontButtonStyle样式,并且明确地设置了FontSize属性,则在按钮中的FindSize设置就会覆盖样式。
    Setters集合是Style类中最重要的属性,但并不是唯一的属性,在Style类中共有5个重要属性:

  3. 设置样式属性

    每个Style对象包装了一个Setter对象的集合,每个Setter对象设置元素的单个属性。唯一的限制是设置器只能改变依赖项属性而不能修改其它属性。

    在某些情况下,不能使用简单的特性字符串设置属性值,此时可以使用嵌套的属性元素代替特性,如下是一个示例:

    <Window.Resources>
        <Style x:Key="HappyFaceTileStyle">
            <Setter Property="Control.Background">
                <Setter.Value>
                    <ImageBrush ImageSource="images/happyface.jpg" ViewportUnits="Absolute" Viewport="0,0,32,32" TileMode="Tile"></ImageBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

    如果希望在多个样式中(或在同一样式的多个设置器中)重用相同的图像画刷,可以将其定义为资源,然后再在样式中使用资源:

    <Window.Resources>
        <ImageBrush x:Key="happyFace" ImageSource="images/happyface.jpg" ViewportUnits="Absolute" Viewport="0,0,32,32" TileMode="Tile"/>
        <Style x:Key="HappyFaceTileStyle">
            <Setter Property="Control.Background" Value="{StaticResource happyFace}"></Setter>
        </Style>
    </Window.Resources>

    为了标识希望设置的属性,需要设置类和属性的名称,然而,类名不必是定义属性的类名,也可以是继承了属性的派生类,如下示例,它使用Button类的引用代替了Control类的引用:

    <Style x:Key="BigFontButtonStyle">
        <Setter Property="Button.FontFamily" Value="Times New Roman"></Setter>
        <Setter Property="Button.FontSize" Value="20"></Setter>
        <Setter Property="Button.FontWeight" Value="Bold"></Setter>
    </Style>

十,样式和行为,布布扣,bubuko.com

时间: 2024-10-14 22:43:38

十,样式和行为的相关文章

QT开发(六十五)——QT样式表编程实例

QT开发(六十五)--QT样式表编程实例 一.QComboBox组合框样式定制 1.基本定义 QComboBox  {     border: 1px solid gray;     border-radius: 3px;     padding: 1px 2px 1px 2px;  # 针对于组合框中的文本内容     min-width: 9em;   # 组合框的最小宽度 } QComboBox::drop-down {     subcontrol-origin: padding;   

Java Script基础(十) 访问样式表

Java Script基础(十) 访问样式表 动态控制样式表 在JavaScript中,有两种方式可以动态的改变样式属性,一种是使用style属性,另一种是使用样式的className属性.另外控制元素隐藏和显示使用display属性. 1.使用sytle属性 语法: 元素.style.样式属性="值"; 在JavaScript中使用CSS样式与在html中使用CSS少有不同,由于JavaScript中的-表示减号,因此如果样式属性名称中带有"-"则要省去,后面首字

全栈JavaScript之路( 二十五 )访问元素的样式

任何支持style 特性的元素在 ,在其DOM  节点 对象中都有一个 style 属性与之对应. 这个style 对象是 CSSStyleDeclaration类型的实例,包含着html style特性的所有样式信息.但不包含 外部样式或者 内嵌样式层叠而来的样式. 在style特性中,提定的任何css属性,都将表现为这个style 对象的属性.对于使用短划线的的属性名,必须转化为驼峰大小写形式,多数情况下都可以这样转换. 也有例外, float 是javascript 关键字,不能直接转换,

Android项目实战(十四):TextView显示html样式的文字

原文:Android项目实战(十四):TextView显示html样式的文字 项目需求: TextView显示一段文字,格式为:白雪公主(姓名,字数不确定)向您发来了2(消息个数,不确定)条消息 这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色. 一开始我想的是用(转) SpannableString与SpannableStringBuilder来实现,因为它可以实现一段文字显示不同的颜色 但是貌似它只能固定哪些位置的文字显示什么样式,于是乎放弃. 然后就想到了用 Html

二十款漂亮的CSS字体样式

样式一: body { margin: 0; padding: 0; line-height: 1.5em; font-family: "Times New Roman", Times, serif; font-size: 14px; color: #000000; background: #f2e7ca url(images/templatemo_body.jpg) top center no-repeat; } 样式二: body { background:#2f373a; fon

【WPF学习】第三十六章 样式基础

原文:[WPF学习]第三十六章 样式基础 前面三章介绍了WPF资源系统,使用资源可在一个地方定义对象而在整个标记中重用他们.尽管可使用资源存储各种对象,但使用资源最常见的原因之一是通过他们的保存样式. 样式是可应用于元素的属性值集合.WPF样式系统与HTML标记中的层叠样式表(Cascading Style Sheet,CSS)标准担当类似的角色.与CSS类似,通过WPF样式可定义通用的格式化特性集合,并且为了保证一致性,在整个应用程序中应用他们.与CSS一样,WPF样式也能够自动工作,指定具体

Web前端面试指导(十六):为什么要初始化CSS样式?

题目点评 这个题目乍一看感觉怪怪的,什么叫初始化样式了?如果换一句话你可能就理解了,就是通用样式.这道题目主要涉及的是理论方面的知识,不用写代码,只要描述清楚就可以了 初始化样式的原因 因为浏览器的兼容的问题,不同浏览器有些标签的默认值是不同的,如果没有CSS初始化往往会出现浏览器之间的页面显示差异.

salesforce 零基础学习(六十)Wizard样式创建数据

项目中表之间关联关系特别多,比如三个表中A,B,C  C作为主表,A,B作为从表,有时候C表需要创建数据时,同时需要创建A,B两个表的数据,这种情况下,使用Wizard样式会更加友好. 以Goods__c表和Goods_Vendor__c表为例,Goods__c为主表,Goods_Vendor__c为从表.新建Goods__c记录以后同时要创建其相关的数据. 表结构关系如下: 代码: 1.GoodsHelper:封装获取goods的列表方法 1 public without sharing cl

从零开始学_JavaScript_系列(十)——dojo(3)(GRID表格创建、样式、列宽可变、排序、过滤器)

(34)gridx gridx系列插件并非和dojo的插件在一起 需要下载的请通过以下网址下载: http://oria.github.io/gridx/ 不过我也不太懂不同版本有什么区别(事实上我对gridx还属于新手水平) PS:dojo本身有dojox/grid插件,语法和gridx并不同,所以不能混用. PSS: 由于看这篇帖子的人,基本没办法自己和服务器/数据库互动,所以建议自己写一个json文件,然后get这个json文件(具体看之前的AJAX相关的,很简单,或者使用我下面给的例子也