SixSix翻译的XAML教程 语法简介

XML教程 2025-08-02
[Thistopicispre-releasedocumentationandissubjecttochangeinfuturereleases.Blanktopicsareincludedasplaceholders.]
XAML语法简介

本文介绍了如何使用几种不同的方法在XAML中创建对象和设置他们的属性。

主题包括以下几个部分:
什么是XAML?
声明对象
设置属性
其他相关主题
什么是XAML

XAML是一种陈述性语言。你可以使用XAML标记创建可视化的UI原件。之后,你可以在一个单独的文件中使用JavasScript来操作你在XAML所声明的对象、响应一些事件。作为一种以XML为基础的陈述性语言,它创建界面时,从原型到产品的过程非常直观,尤其是对于有网页设计背景知识和技术的人。

XAML文件通常是以.xaml为后缀的XML文件。下面是一个典型的SilverlightXAML文件例子。.XAML
Canvas
xmlns="http://schemas.mi*cros*o*ft.com/client/2007"
xmlns:x="http://schemas.*mi*cro*soft.com/winfx/2006/xaml"
Rectangle
Width="100"
Height="100"
Fill="Blue"/
/Canvas

声明对象

在XAML中,有以下几种方式声明对象和设置它们的属性::
Objectelementsyntax:使用开放的和封闭的标签来声明对象,就像XML一样。你可以使用这种方法来声明根元素和设置它们的属性值。
Attributesyntax:使用内嵌来声明对象。你可以使用这种方法来设置一个属性的值。.
Objectelementsyntax

一种典型的使用Objectelementsyntax来声明对象的方法。.首先你要创建两个XML元素标签:
objectName

/objectName


...objectName是你想要实例化的对象的名字。下面的例子使用Objectelementsyntax声明一个Canvas。XAML
Canvas
/Canvas


一些对象,比如Canvas,可以包含其他对象。.XAML
Canvas
Rectangle
/Rectangle
/Canvas


为了方便,如果一个对象里不包含其他对象,那么可以只使用一个标签来描述它XAML
Canvas
Rectangle/
/Canvas

使用Attributesyntax声明对象
见下一部分,设置属性,获得更多有关attributesyntax的信息。
设置属性

使用objectelementsyntax,你可以在声明对象的时候设置它的属性.在XAML中,有几种方法可以设置属性:使用attributesyntax,或使用propertyelementsyntax.
通过Attributesyntax设置属性


objectNameproperty="propertyValue"

/objectName


...property是属性名称,你会将propertyValue的值赋到它的身上。下面的例子展示了如何使用attributesyntax来设置一个Rectangle的Width,Height,和Fill.XAML
Canvas
Rectangle
Width="100"Height="100"Fill="Blue"/
/Canvas



使用PropertyElementSyntax设置属性

一些属性可以通过propertyelementsyntax来设置.你通过创建XMLelements来描述你想要的属性,例如:
objectName

objectName.property

propertyValue.../

/objectName.property

/objectName


...property是属性名称,你会将propertyValue的值赋到它的身上.下面的例子展示了如何使用propertyelementsyntax来设置一个Rectangle的Fill,使用aSolidColorBrush.XAML
Canvas
Rectangle
Width="100"
Height="100"
Rectangle.Fill
SolidColorBrush/
/Rectangle.Fill
/Rectangle
/Canvas

使用ContentElementSyntax设置属性

有时候,当一个属性支持elementsyntax,你可以忽略属性名,直接将属性值内嵌在对象标签里。这就是contentelementsyntax.下面的例子展示了怎样不指定Text属性,设置TextBlock的Text属性值。XAML
TextBlock
Hello!
/TextBlock

使用ImplicitCollectionSyntax设置属性

有时候,一个属性表现为一个集合,你可以忽略集合名字,直接设置属性值。这就是implicitcollectionsyntax.。下面的例子展示了对于LinearGradientBrush如何忽略GradientStopCollection,以及直接指定GradientStop对象。GradientStopCollection包含在第一个LinearGradientBrush中,,但在第二个里被忽略了。XAML
RectangleWidth="100"Height="100"
Canvas.Left="0"Canvas.Top="30"
Rectangle.Fill
LinearGradientBrush
LinearGradientBrush.GradientStops

!--HeretheGradientStopCollectiontagisspecified.--
GradientStopCollection
GradientStopOffset="0.0"Color="Red"/
GradientStopOffset="1.0"Color="Blue"/
/GradientStopCollection
/LinearGradientBrush.GradientStops
/LinearGradientBrush
/Rectangle.Fill
/Rectangle



RectangleWidth="100"Height="100"
Canvas.Left="100"Canvas.Top="30"
Rectangle.Fill
LinearGradientBrush
LinearGradientBrush.GradientStops

!--NoticethattheGradientStopCollectiontag
isomitted.--
GradientStopOffset="0.0"Color="Red"/
GradientStopOffset="1.0"Color="Blue"/
/LinearGradientBrush.GradientStops
/LinearGradientBrush
/Rectangle.Fill
/Rectangle


有时你甚至可以同时忽略集合元素标签和属性元素标签::XAML
RectangleWidth="100"Height="100"
Canvas.Left="200"Canvas.Top="30"
Rectangle.Fill
LinearGradientBrush
GradientStopOffset="0.0"Color="Red"/
GradientStopOffset="1.0"Color="Blue"/
/LinearGradientBrush
/Rectangle.Fill
/Rectangle

什么时候使用Attribute或PropertyElementSyntax设置属性

所有属性都支持attribute或propertyelementsyntax,一些属性支持其他方法.设置属性所支持的方法取决于属性值所认可的对象类型。.
如果属性值是简单类型,比如Double,Integer,String,这种属性只支持attributesyntax.下面的例子展示了如何使用attributesyntax设置Rectangle的Width.Width属性支持Attributesyntax,因为他的属性值是Double类型。XAML
RectangleWidth="100"/

是否可以使用attributesyntax取决于你使用于设置属性的对象是否支持attributesyntax.下面的例子展示了使用attributesyntax设置一个Rectangle的Fill属性。在你使用SolidColorBrush去设置Fill属性的时候,它是支持attributesyntax的,因为SolidColorBrush支持attributesyntax.XAML
RectangleFill="Blue"/

是否能够使用elementsyntax设置属性取决于你使用的对象是否支持。如果对象支持objectelementsyntax,属性才支持propertyelementsyntax。下面的例子展示了使用propertyelementsyntax设置一个Rectangle的Fill.当你使用SolidColrBrush设置Fill的时候,它是支持attributesyntax的,因为SolidColorBrush支持attributesyntax。.XAML
Rectangle
Rectangle.Fill
SolidColorBrush/
/Rectangle.Fill
/Rectangle

SeeAlso
SilverlightObjectModels