没有合适的资源?快使用搜索试试~ 我知道了~
XAML入门精通资料
需积分: 8 13 下载量 157 浏览量
2012-11-15
18:36:34
上传
评论 1
收藏 200KB DOCX 举报
温馨提示
试读
62页
适合初步接触xaml的新手入门,作为一部字典使用xaml中的细节
资源推荐
资源详情
资源评论
Xaml 概述(wpf)
发送反馈
本 主 题 介 绍 XAML 语 言 的 功 能 ,并 演 示 如 何 使 用 XAML 编 写 Windows Presentaon
Foundaon (WPF) 应用程序。本主题专门介绍 WPF 实现的 XAML。XAML 本身是一个比 WPF
大的语言概念。
本主题包括下列各节。
什么是 ?
语法概述
中的大小写和空白
标记扩展
类型转换器
根元素和 命名空间
中的自定义前缀和自定义类型
事件和 代码隐藏
命名元素
附加属性和附加事件
基类型和
安全性
从代码中加载
接下来的内容
相关主题
什么是 ?
是一种声明性标记语言。如同应用于 编程模型一样,简化了为 应用
程序创建 的过程。您可以在声明性 标记中创建可见的 元素,然后使用代码隐藏文件(通过分部类定义与标记
相连接)将 定义与运行时逻辑相分离。直接以程序集中定义的一组特定后备类型表示对象的实例化。 这与大多数
其他标记语言不同,后者通常是与后备类型系统没有此类直接关系的解释语言。实现了一个工作流,通过此工作流,
各方可以采用不同的工具来处理应用程序的 和逻辑。
以文本表示时,文件是通常具有 .xaml扩展名的 文件。 可通过任何 编码对文件进行编码,但通常编码
为 。
下面的示例演示如何创建作为 一部分的按钮。此示例的目的仅在于供您初步了解 是如何表示常用 编程形式的
(它不是一个完整的示例)。
XAML
打印
<StackPanel>
<Button Content="Click Me"/>
</StackPanel>
语法概述
下面的章节介绍 语法的基本形式,并提供一个简短的标记示例。这些章节并不提供每个语法形式的完整信息,例如这
些语法如何在后备类型系统中表示。有关本主题中介绍的每种语法形式在 语法中的详情的更多信息,请参见
语法详述。
如果您以前熟悉 语言,则下面几节中的很多材料对您而言都是基础知识。这是 的其中一个基本设计原则的结果。
语言定义它自己的概念,但这些概念在 语言和标记形式内发挥作用。
XAML 对象元素
对象元素通常声明类型的实例。该类型在为以 为语言的技术提供后备类型的程序集中定义。
对象元素语法始终以左尖括号 开头,后跟要创建实例的类型的名称。(该名称可能包含前缀,前缀的概念会在后面解
释。)在此之后,您可以选择声明该对象元素的特性。要完成对象元素标记,请以右尖括号 结尾。您也可以使用不含任何
内容的自结束形式,方法是用一个正斜杠后接一个右尖括号 来完成标记。例如,请再次查看前面演示的标记代码段:
XAML
打印
<StackPanel>
<Button Content="Click Me"/>
</StackPanel>
此示例指定了两个对象元素: <StackPanel>(含有内容,后面有一个结束标记)和 <Button.../>(自结束形式,包含
几个特性)。 对象元素 StackPanel和 Button各映射到一个类名,这些类由 定义并且是 程序集的一部分。
指定对象元素标记时会创建一条 处理指令来创建一个新实例。每个实例都是在分析和加载 时通过调用基础类
型的默认构造函数来创建的。
特性语法(属性)
对象的属性通常可表示为对象元素的特性。特性语法命名在特性语法中设置的属性,后跟赋值运算符 。特性的值始终以包
含在引号中的字符串的形式进行指定。
特性语法是最简单有效的属性设置语法,并且对于曾使用过标记语言的开发人员而言在使用中是最直观的语法。例如,以下标
记将创建一个具有红色文本和蓝色背景的按钮,还将创建指定为 Content的显示文本。
XAML
打印
<Button Background="Blue" Foreground="Red" Content="This
is a button"/>
属性元素语法
对于对象元素的某些属性,特性语法是不可能实现的,因为无法在特性语法的引号和字符串限制内充分地表达提供属性值所必
需的对象或信息。对于这些情况,可以使用另一个语法,即属性元素语法。
属性元素开始标记的语法为 <
类型名称
.
属性名称
>。 通常,该标记的内容是类型的一个对象元素,属性会将该元素作为其值。
指定内容之后,必须用一个结束标记结束属性元素。结束标记的语法为 </
类型名称
.
属性名称
>。
如果可以使用特性语法,那么使用特性语法通常更为方便,且能够实现更为精简的标记,但这通常只是一个风格的问题,而不
属于技术限制。下面的示例演示了在前面的特性语法示例中设置的相同属性,但这次对 Button的所有属性使用了属性元素语
法。
XAML
打印
<Button>
<Button.Background>
<SolidColorBrush Color="Blue"/>
</Button.Background>
<Button.Foreground>
<SolidColorBrush Color="Red"/>
</Button.Foreground>
<Button.Content>
This is a button
</Button.Content>
</Button>
集合语法
语言包含一些优化,可以生成可读性更好的标记。其中的一项优化是:如果某个特定属性采用集合类型,则您在标记
中声明为该属性的值内的子元素的项将成为集合的一部分。在这种情况下,子对象元素的集合是设置为集合属性的值。
下面的示例演示为 !"#$#%&属性设置值的集合语法:
XAML
打印
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<!-- no explicit new GradientStopCollection, parser
knows how to find or create -->
<GradientStop Offset="0.0" Color="Red" />
<GradientStop Offset="1.0" Color="Blue" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
XAML 内容属性
指定了一个语言功能,通过该功能,一个类可以指定它的一个且仅一个属性为 内容属性。该对象元素的子元素
用于设置该内容属性的值。换言之,仅对内容属性而言,您可以在 标记中设置该属性时省略属性元素,并在标记中生
成更直观的父级子级形式。
例如, ' 指定内容属性 ()!* 。 系统处理下面两个 ' 元素的方式相同。 第一个元素利用了内容属性语法而省略
了 Border.Child属性元素。 第二个元素显式标明 Border.Child。
XAML
打印
<Border>
<TextBox Width="300"/>
</Border>
<!--explicit equivalent-->
<Border>
<Border.Child>
<TextBox Width="300"/>
</Border.Child>
</Border>
作为 语言的规则,内容属性的值必须完全在该对象元素的其他任何属性元素之前或之后指定。例如,下面的标
记无法进行编译:
打印
<Button>I am a
<Button.Background>Blue</Button.Background>
blue button</Button>
有关 内容属性的此项限制的更多信息,请参见 语法详述 的“内容属性”一节。
文本内容
有少量 元素可直接将文本作为其内容来处理。若要实现此功能,必须满足以下条件之一:
类必须声明一个内容属性,并且该内容属性必须是可赋值给字符串的类型(该类型可以是 +,-.#)。 例如,任何
("#"#("#*都将 ("#"#用作其内容属性,并且其类型为 +,-.#,这样就支持实际的 ("#"#("#
*(例如, '/##")上的如下用法: <Button>Hello</Button>。
类型必须声明一个类型转换器,该类型转换器将文本内容用作其初始化文本。例如, <Brush>Blue</Brush>。
这种情况实际上并不常见。
类型必须为已知的 语言基元。
内容属性和集合语法组合
请看以下示例:
XAML
打印
<StackPanel>
<Button>First Button</Button>
<Button>Second Button</Button>
</StackPanel>
此例中,每个 '/##"都是 $#."*的一个子元素。 这是一个简单直观的标记,其中出于两个不同的原因省略了两个标
记。
省略的 StackPanel.Children 属性元素:$#."*从 "*派生。 "*将 "*()!* "定义为其
内容属性。
省略的 UIElementCollection 对象元素:"*()!* "属性采用类型 *"#(**.#!",该类型实
现 !&#。 根据处理集合(例如 !&#)的 规则,集合的元素标记可以省略。 (在这种情况下,
*"#(**.#!"实际无法实例化,因为它没有公开默认构造函数,这就是 *"#(**.#!"对象元
素以注释形式出现的原因。)
XAML
打印
<StackPanel>
<StackPanel.Children>
<!--<UIElementCollection>-->
<Button>First Button</Button>
<Button>Second Button</Button>
<!--</UIElementCollection>-->
</StackPanel.Children>
</StackPanel>
特性语法(事件)
特性语法还可用于事件成员,而不仅限于属性成员。在这种情况下,特性的名称为事件的名称。在 事件的 实现
中,特性的值是实现该事件的委托的处理程序的名称。例如,以下标记将 (*!.事件的一个处理程序指定给在标记中创建的 '
/##":
XAML
打印
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/prese
ntation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ExampleNamespace.ExamplePage">
<Button Click="Button_Click" >Click Me!</Button>
</Page>
除此特性语法示例外,还有更多关于 中的事件和 的内容。例如,您可能希望了解此处引用的 ClickHandler
表示什么,以及它是如何定义的。 这将在本主题中后面的 事件和 代码隐藏一节中解释。
剩余61页未读,继续阅读
资源评论
a276434731
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功