摘要
XAML是派生自XML的可扩展应用程序标记语言(Extensible Application Markup Language),由微软创造。XML是一种可扩展标记语言,与HTML类似,但是它是传输数据,而非显示数据,XML标签没有预定义,需要自行定义标签wpf(Windows Presentation Foundation)是微软新一代图形系统,绘图技术的改进基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。由两个主要部分组成:引擎和编程框架。
正文
命名空间
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml——这表示利用x代替XAML的命名空间。用于包含特定的关键字和System.Windows.Markup中类型的子集。xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation——另一个命名空间。映射诸多wpf.net命名空间(system.windows.xxx,是个一对多的映射,主要封装了三个程序集中,WindowsBase.dll、Presentation.dll和PresentationFramework.dll)
x: 前缀
x:Class='MyXaml.Window1' ——利用class特性指定c#类名(后台c#代码) x:Key:为 ResourceDictionary(或其他框架中的类似字典概念)中的每个资源设置唯一的键。 在典型的 WPF 应用标记中的所有 x: 用法中,x:Key 可能占到 90%。 x:Name:处理对象元素后,为运行时代码中存在的实例指定运行时对象名称。 x:Static:启用一个返回静态值的引用,该静态值不是与 XAML 兼容的属性。 x:Type:根据类型名称构造 Type 引用。
属性元素
一般的,我们想要对一个标签的属性赋值,可以直接在标签内部键入属性名给其赋值,如我们给button的Content属性赋值:
<Grid x:Name="grid1">
<tag>
<tag.property>
value
</tag.property>
</tag>
<Button>
<Button.Content>this is test</Button.Content>
<Button.Background>
<SolidColorBrush Color="Red"></SolidColorBrush>
</Button.Background>
</Button>
集合语法
XAML 语言包含一些优化,可以生成更易于阅读的标记。 其中一项优化是:如果某个特定属性采用集合类型,则在标记中声明为该属性的值内的子元素的项将成为集合的一部分。 在这种情况下,子对象元素的集合是设置为集合属性的值。
<Grid>
<Grid.Background>
<LinearGradientBrush>
<GradientStop Offset="0" Color="Red"></GradientStop>
<GradientStop Offset="1" Color="Green"></GradientStop>
</LinearGradientBrush>
</Grid.Background>
</Grid>
内容属性和集合语法组合
<StackPanel>
<Button>First Button</Button>
<Button>Second Button</Button>
<StackPanel>
<StackPanel.Children>
<Button>First Button</Button>
<Button>Second Button</Button>
</StackPanel.Children>
</StackPanel>
</StackPanel>
特性语法(事件)
<Button Content="Button" Click="Button_Click"></Button>
类型转换器
Thickness 结构是一个类型示例,该类型拥有可使用 XAML 的类型转换。 Thickness 指示嵌套矩形中的度量,可用作属性(如 Margin)的值。 通过对 Thickness 放置类型转换器,所有使用 Thickness 的属性都可以更容易地在 XAML 中指定,因为它们可指定为特性。
<Button Margin="10,20,10,30" Content="Click me"/>
<Button Content="Click me">
<Button.Margin>
<Thickness Left="10" Top="20" Right="10" Bottom="30"/>
</Button.Margin>
</Button>
注意:
XAML是大小写敏感的,所以不能使用<button>代替<Button>,但类型转换器通过不是大小写敏感的,这意味着 Foreground="White" 和 "Foreground="white"具有相同的效果。
- WPF中的XAML具有如下自身的特性:
- 每个XAML文档都映射到一个.NET类的实例。元素名将与.NET 类名严格的匹配。
- 在XMl文档中,可以在一个元素中嵌套另一个元素,这种嵌套关系将会形成一个元素的树状结构
- 可以通过设置元素属性来为每个类的属性赋值。XAML提供提供了属性元素语法来为复杂的属性进行赋值。
- 与XML相似,每个XAMl文件都只能有一个根元素,并且必须具有两个命名空间
注释
语法:<!--被注释的内容-->
- 只能出现在开始标签和结束标签之间
- 不能注释标签的Attribute
- 注释不能嵌套