1、什么是XAML
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义,需要自行定义标签
XAML用于声明UI及UI元素的一种格式
XAML用于声明样式和模板的格式,这些样式和模板应用于控件和 UI 的逻辑基础
XAML 定义 UI 的可视外观,关联的代码隐藏文件定义逻辑
XAML 可在 Expression Blend 与 Visual Studio 之间互换
2、XAML基本语法:
(1)命名空间
XAML命名空间的概念和C#代码中的Using,VB.Net代码中的Import类似,为对象元素的实例化提供引用类库声明,编程框架能够区分用户声明的标记和框架声明的标记,并通过命名空间限定来消除可能的标记冲突
语法结构为“xmlns:”+“命名空间前缀名”,默认命名空间无需定义命名空间前缀名:
<Page x:Class="App1.MainPage" IsTabStop="false" 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">
上面的代码中
<Page>作为页面Root对象元素被声明,开始标签<Page>中,包含了多个“xmlns”特性
在XAML语法规则中,“xmlns”是属于强制关键字,被用来声明一个命名空间。
常见类型命名:
1.<Page>作为页面Root对象元素被声明
2.开始标签<Page>中,包含了多个“xmlns”特性
3.在XAML语法规则中,“xmlns”是属于强制关键字,被用来声明一个命名空间。
(2)对象声明:
使用开始标记和结束标记将对象实例化为XML格式的元素
<Canvas>
</Canvas>
对象中可以包含其他对象
<Canvas>
<Rectangle></Rectangle>
</Canvas>
若一个对象中不包含其他对象,可以使用一个自结束标记来声明对象
<Rectangle/>
(3)属性
属性是对XAML元素特征进行描述的方法,属性不允许在XAML中重复设置多次,允许在托管代码中改变元素的属性值
只有实例化对象才可以设置实例属性,格式如下:
<objectName propertyName=“propertyValue”/>
或者
<objectName propertyName=“propertyValue”>
<objectName>
每个属性对应一个属性值,属性值类型必须与属性匹配
一个标记中可以设置对象的多个属性
某些属性可以使用属性元素语法来设置,格式为:
<object>
<object.property>
<!—元素属性值-->
</object.property>
</object>
(4)附加属性
附加属性作用于支持附加属性的元素
附加属性是由支持附加属性的父元素产生作用,支持附加属性的元素会继承所在的父元素的属性
附加属性的格式:AttachedPropertyProvider.PropertyName
<Canvas> <Rectangle Canvas.Left="50" Canvas.Top="50" Width="200" Height="150" RadiusX="10" RadiusY="10" Fill="Gold"/> </Canvas>
(5)依赖属性
1.依赖属性,英文称为Dependency Properties,是Windows 8,Silverlight特有的属性系统。
2.在传统.Net应用开发中,CLR属性是面向对象编程的基础,主要提供对私有字段的访问封装,开发人员可以使 用get和set访问器实现读写属性操作。依赖属性和CLR属性类似,同样提供一个实例级私有字段的访问封装,通过GetValue和SetValue访问器实现属性的读写操作。
3.依赖属性最重要的一个特点是属性值依赖于一个或者多个数据源,提供这些数据源的方式也可以不同,例如,通过数据绑定提供数据源,通过动画,模板资源,样式等方式提供数据源等,在不同的方式数据源下,依赖属性可以实时对属性值进行改变。
<Page.Resources> <Style x:Key="ButtonStyle" TargetType="Button"> <Setter Property="Foreground" Value="Red"/> <Setter Property="FontSize" Value="24"/> </Style> </Page.Resources> <Button Content="依赖属性测试" Style="{StaticResource ButtonStyle}" Width="240"/>
未完待续