Windows Phone 一、XAML基础语法

XAML的命名空间

命名空间格式:语法结构为“xmlns:”+“命名空间前缀名”,默认命名空间无需定义命名空间前缀名“xmlns”

命名空间的声明

<Page

x:Class="App1.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="using:App1"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d"

Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

命名空间的用途:约束文档规范,明确标签的类型。

xmlns(XML Namespace)默认命名空间

xmlns:x 可以理解为给命名空间起别名

xmlns不是XAML中特有或特别定义的,它是XML具备的,目的是为了约束XML的文档结构

xmlns:d 和 xmlsn:ms 是为 Visual Studio 设计视图服务的,不会对程序造成任何影响

URI 统一资源定位符:"http://schemas.microsoft.com/winfx/2006/xaml"

XAML名称范围(x:)语言特性

x:Class

配置XAML编译,在标记和代码隐藏之间连接分部类。代码分部类在一个独立的代码文件中定义,标记分部类由代码是由XAML在编译过程间创建。

<object

x:Class="namespace.classname"...>

...

</object>

x:FieldModifier

修改XAML编译行为,使指定对象引用的字段被定义有public访问权限而不是默认的private行为。

<object

x:FieldModifier="public"

... />

x:Key

唯一标识作为资源被创建和引用的元素,这些资源存在于一个ResourceDictionary中。

<ResourceDictionary>

<object x:Key="stringKeyValue".../>

</ResourceDictionary>

隐式 ResourceDictionary 中使用:

<object.Resources>

<object x:Key="stringKeyValue".../>

</object.Resources>

x:Name

唯一标识对象元素,可方便从代码隐藏或一般代码中访问已实例化的对象。应用于支持的编程模型之后,x:Name可视为等效于持有一个对象引用(由一个构造函数返回)的变量。

x:Key和x:Name不是相同的概念。

x:Key仅用于资源词典中。

x:Name用于XAML的所有区域。

一个使用键值的FindName调用不会检索键资源。

x:Uid

为标记元素提供一个唯一标识符。对于Windows运行时XAML,这个唯一标识符供XAML本地化过程和工具使用。

<Button

x:Uid="ResourceKey"

Content="被资源中键为“ResourceKey.Content的值替换”"/>

开发多语言化系统时会经常用到。

其他XAML固有数据类型,就是常见的简单数据类型的声明:

x:Boolean

对于CLR支持来说,原语对应于Boolean。XAML分析x:Boolean的值时区分大小写。请注意,"x:Bool"不是可接受的替代原语。

x:String

对于CLR支持来说,原语对应于String。对字符串的编码默认采用包围XML编码。

x:Double

对于CLR支持来说,原语对应于Double。除了数字值,x:Double的文本语法支持令牌 "NaN",这是将布局行为的"Auto"存储为资源值的方式。对这些令牌的处理区分大小写。你可以使用科学计数法,例如将1,000,000 记为"1+E06"。

x:Int32

对于CLR支持来说,原语对应于Int32x:Int32被视为带有符号,你可以为负整数包含减号(“-”)。在XAML中,文本语法中缺少符号表示有符号正值。

对象声明方式

使用开始标记和结束标记将对象实例化为XAML格式的元素

<Canvas>

</Canvas>

对象中可以包含其他对象

<Canvas>

<Rectangle></Rectangle>

</Canvas>

若一个对象中不包含其他对象,可以使用一个自结束标记来声明对象

<Rectangle/>

XAML创建对象元素

  • 标签名即控件名称
  • 一个XAML文件只允许有一个根对象元素Page
  • 标签属性或子标签为控件对象属性操作
  • 每个XAML标签都会有一个相对应的类型
  • 每声明一个XAML节点就相当于创建相应类型的对象
  • 在哪个元素结点下添加标签就相当于在哪个对象下添加对象

属性设置四种方式

?          属性键值语法

?          属性元素语法

?          内容元素语法

?          隐式集合语法

不同的属性类型我们可以选择不同的设置方式

简单类型数据,比如字符串、数字之类的使用键值形式,即PropName=“PropValue”
复杂类型数据,比如文本块值、按钮内容、背景图片,使用属性元素形式
内容元素语法(默认语法)为了方便
集合性质使用集合语法

属性键值语法:

只有实例化对象才可以设置实例属性,格式如下:

<objectName propertyName=“propertyValue”/>

或者

<objectName propertyName=“propertyValue”>

<objectName>

每个属性对应一个属性值,属性值类型必须与属性匹配

一个标记中可以设置对象的多个属性

objectName是要实例化的对象,propertyName是需要设置的属性名称,propertyValue是属性的值

<Canvas Width=”150” Height=”150” Background=”Red”/>

或者

<Canvas Width=”150” Height=”150” Background=”Red”>

</Canvas>

绝大多数属性都是使用属性键值的形式来操作

要求属性类型必须为一些“简单的/可以自动转换的”类型

内置属性类型转换器

仅针对一些复杂类型的控件属性

用于将XAML属性中设置的字符串转换成为相应的强类型数据

例如:

<Button

x:Name="btn"

HorizontalAlignment="Left"/>

对比

btn.HorizontalAlignment = HorizontalAlignment.Left;

XAML中只需要将HorizontalAlignment属性设置为Left字符串即可将控件的水平对其属性改为左对齐

属性元素语法

某些属性可以使用属性元素语法来设置,格式为:

<object>

<object.property>

<!—元素属性值-->

</object.property>

</object>

如果一个对象的属性是一个复杂类型,不能够由简单的字符串直接表示的时候,这时需要用到属性元素的语法:

<标签名>

<标签名.属性名>

<属性值/>

</标签名.属性名>

</标签名>

文本块值,按钮内容,背景图片

<Ellipse Width=”150” Height=”150”>

<Ellipse.Fill>

<SolidColorBrush Color=”Green”/>

</Ellipse.Fill>

</Ellipse>

内容元素语法

某些元素的属性支持内容元素语法,允许忽略元素的名称

实例对象会根据XAML元素中的第一个标记值来设置属性

对于大量的格式化文本,使用内容元素语法更加灵活

属性标记之间可以插入大量的文本内容

<TextBlock>Windows 10</TextBlock>

对于大多数对象元素都有一个默认属性;

直接将元素的 “InnerText” 设置为属性值:

例如:

<Button x:Name="btn1" Content="Hello"/>

<Button x:Name="btn2">

World

</Button>

通过特性标签知道默认属性

[ContentProperty(Name = "Content")]

隐式集合语法

元素支持一个属性元素的集合,才使用集合语法进行设置属性

使用托管代码的Add方法来增加更多的集合元素

本质是向对象的集合中添加属性项

在此之前我们考虑的都是非集合性质的属性;

对于一个集合类的属性可以用重复子元素的方式实现设置值:

<Grid>

<Grid.Children>

<TextBlock>Hello1</TextBlock>

<TextBlock>Hello2</TextBlock>

<TextBlock>Hello3</TextBlock>

<TextBlock>Hello4</TextBlock>

<TextBlock>Hello5</TextBlock>

</Grid.Children>

</Grid>

<Rectangle Width=”200” Height=”150”>

<Rectangle.Fill>

<LinearGradientBrush>

<GradientStopCollection>

<GradientStop Offset=”0.0” Color=”Gold”/>

<GradientStop Offset=”1.0” Color=”Green”/>

</GradientStopCollection>

</LinearGradientBrush>

</Rectangle.Fill>

</Rectangle>

<Rectangle Width=”200” Height=”150”>

<Rectangle.Fill>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Offset=”0.0” Color=”Gold”/>

<GradientStop Offset=”1.0” Color=”Green”/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</Rectangle.Fill>

</Rectangle>

省略GradientStopCollection隐式的属性设置方法

附加属性

附加属性作用于支持附加属性的元素

附加属性是由支持附加属性的父元素产生作用,支持附加属性的元素会继承所在的父元素的属性

附加属性的格式:AttachedPropertyProvider.PropertyName

AttachedPropertyProvider为附加属性的提供者,PropertyName为附加属性的名称

<Canvas>

<Rectangle Canvas.Left=”50” Canvas.Top=”50” Width=”200” Height=”150” RadiusX=”10” RadiusY=”10” Fill=”Gold”/>

</Canvas>

Rectangle元素设置了Canvas.Left和Canvas.Top属性,使用Canvas进行布局时,包含在<Canvas>…</Canvas>之间的元素就会产生相对于Canvas对象的附加属性Canvas.Left和Canvas.Top属性

依赖属性

英文名称:Dependency Properties

依赖属性和CLR属性类似,提供一个实例级私有字段的访问封装,通过GetValue和SetValue访问器实现属性的读写操作

最重要一个特点是属性值依赖于一个或者多个数据源,提供这些数据源的方式也可以不同

由于依赖多数据源的缘故,故称之为依赖属性

XAML的路由事件(Routed Events)处理方式可分为三种:

冒泡事件(Bubbling Event),该事件是最常见的事件处理方式。该事件表示对象激活事件后,将沿着对象树由下至上,由子到父的方式传播扩散,直到被处理或者到达对应的根对象元素,或者该事件对应得RoutedEventArgs.Handled=true时,完成处理。在传播扩散中,所有涉及的元素对象都可以被该事件进行控制。该事件可被Windows 8,Silverlight支持。

隧道事件(Tunneling Event),该事件处理方式和冒泡事件相反,对象激活事件后,将从根对象元素传播扩散到激活事件的子对象,

或者该事件对应得RoutedEventArgs.Handled=true时,完成处理。该事件仅Windows 8支持。

直接路由事件(Direct Routing Event),该事件没有向上或者向下传播扩散,仅作用于当前激活事件的对象上。该事件可被Windows 8,Silverlight支持。

常见的标记扩展

Binding标记扩展

{Binding}提供一个data-bound属性值,使该值可延迟到运行时。绑定标记扩展会在XAML 加载时转换为一种中间表达式对象。数据绑定引擎在运行时使用表达式和数据上下文来确定属性值。

CustomResource标记扩展

通过计算对一个来源于自定义资源查找实现的资源的引用,为任何XAML属性提供一个值。资源查找是通过CustomXamlResourceLoader类实现执行的。

RelativeSource标记扩展

提供一种方式,在运行时对象图中以相对关系形式指定绑定来源。

StaticResource标记扩展

通过计算对一个已定义资源的引用,为任何XAML属性提供一个值。资源在一个ResourceDictionary中定义,一种StaticResource用法在ResourceDictionary中引用该资源的键。

TemplateBinding标记扩展

将一个控件模板中的属性值链接到模板控件上其他某个公开的属性的值。TemplateBinding只能在XAML中的一个ControlTemplate定义中使用。

ThemeResource标记扩展

使用根据当前处于活动状态的主题检索不同资源的附加系统逻辑,通过计算对某个资源的引用来为任何XAML属性提供值。与StaticResource类似,资源是在ResourceDictionary中定义的,并且ThemeResource用法引用ResourceDictionary中的该资源的键。

时间: 2024-10-28 15:32:56

Windows Phone 一、XAML基础语法的相关文章

Python基础语法(转)

作者:Peter 出处:http://www.cnblogs.com/Peter-Zhang/ Python 基础语法(一) Python的特点 1. 简单 Python是一种代表简单思想的语言. 2. 易学 Python有极其简单的语法. 3. 免费.开源 Python是FLOSS(自由/开放源码软件)之一. 4. 高层语言 使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节. 5. 可移植性 Python已被移植到很多平台,这些平台包括Linux.Windows.Free

Python基础--Python3基础语法

Python3 基础语法 编码 默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串.当然也可以为源码文件指定不同的编码,例如: # -*- coding: cp-1252 -*- 标识符 1.第一个字符必须是字母表中字母或下划线: 2.标识符的其他的部分有字母.数字和下划线组成: 3.标识符对大小写敏感. 注:在Python3中,非ASCII标识符也是允许的. Python保留字 保留字即关键字,我们不能把它们用作任何标识符名称.Python的标准库提供了一个

C#基础语法(一)

一.基础语法 1.C#区分大小写,所以myVar和MyVar是两个不同的变量. 2.每个C#可执行文件(如控制台应用程序,Windows应用程序和Windows服务)都必须有一个入口点----Main()(M大写) public static void Main() { //do something } 在程序启动时调用这个方法.该方法要么没有返回值(void),要么返回一个整数(int) 二.变量 1.编译器不允许在表达式中使用未初始化的变量.如果变量是类或结构中的字段,如果没有初始化,创建这

背水一战 Windows 10 (26) - XAML: x:DeferLoadStrategy, x:Null

原文:背水一战 Windows 10 (26) - XAML: x:DeferLoadStrategy, x:Null [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 XAML x:DeferLoadStrategy="Lazy" - 用于指定一个 UIElement 为一个延迟加载元素 x:Null - null 示例1.x:DeferLoadStrategy 通过 FindName 加载Xaml/DeferLoadStrategy/Demo1.xaml

Python 基础语法(四)

Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)-------------------------------------------- 十.Python标准库 Python标准库是随Pthon附带安装的,包含了大量极其有用的模块. 1. sys模块 sys模块包含系统对应的功能 sys.argv ---包含命令行参数,第一个参数是py的文件名 sys.platform ---返回平台类型 sy

黑马程序员---------《基础语法》笔记

mac ox 基础介绍 1.常用的Unix指令 ls-l 列出当前路径的所有文件cd 目录转换pwd 显示当前路径mkdir 新建目录touch 创建文件open 打开文件\文件夹who 显示当前用户名clear 清屏按下Tab键,可以自动补齐指令名称.文件名.文件夹名等 2.Mac的基本操作 DOCK:桌面下方的快捷应用 DOCK的设置:可以根据自己喜好设置DOCK的风格 3.常用快捷键: 拷贝:cmd+c粘贴:cmd+v回退:cmd+z保存: cmd+s关闭窗口:cmd+w退出程序:cmd+

python基础语法(一)

Python的特点 1. 简单 Python是一种代表简单思想的语言. 2. 易学 Python有极其简单的语法. 3. 免费.开源 Python是FLOSS(自由/开放源码软件)之一. 4. 高层语言 使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节. 5. 可移植性 Python已被移植到很多平台,这些平台包括Linux.Windows.FreeBSD.Macintosh.Solaris.OS/2.Amiga.AROS.AS/400. BeOS.OS/390.z/OS.

一,XAML基础

RuntimeNameProperty特性:为什么<Grid x:Name="grid1"></Grid>等价于<Grid Name="grid1"></Grid>,是因为Grid类使用RuntimeNameProperty特性进行了修饰,  RuntimeNameProperty特性指示哪个属性的值将被做为该类型的实例的名称. WPF的类型转换器:XAML解析器通过以下的两个方法查找类型转换器,如果找不到,XAML解

Markdown 简介及基础语法

一.Markdown 简介 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 二.Markdown 基础语法 1. Markdown 中文版语法说明 2. Markdown 语法手册(参考 wintnessai1 整理) 三.Markdown 编辑工具 1. MaHua 在线 Markdown 编辑器 2. 作业部落 3. Sublime Text2/3 (个人推荐) 4. MarkdownPad(View 及时预览) 正所谓: