SixSix翻译的XAML教程 语法简介

时间:2021-05-26

[Thistopicispre-releasedocumentationandissubjecttochangeinfuturereleases.Blanktopicsareincludedasplaceholders.]
XAML语法简介

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

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

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

XAML文件通常是以.xaml为后缀的XML文件。下面是一个典型的SilverlightXAML文件例子。.XAML
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章