使用Silverlight时您将遇到的第一件事就是XAML. XAML代表可扩展的应用程序标记语言.它是一种基于XML的简单和声明性语言.
在XAML中,创建,初始化和
它主要用于设计GUI.
它也可以用于其他目的,例如,在工作流基础中声明工作流.
创建新的Silverlight项目时,默认情况下会在 MainPage.xaml 中看到一些XAML代码,如下所示.
<UserControl x:Class = "FirstExample.MainPage" xmlns = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/expression/blend/2008" xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable = "d" d:DesignHeight = "300" d:DesignWidth = "400"> <Grid x:Name = "LayoutRoot" Background = "White"> </Grid> </UserControl>
您可以看到上面给出的XAML文件提到了不同类型的信息;所有这些都在下面的表格中简要描述.
信息 | 描述 |
---|---|
< UserControl | 提供用于定义封装现有控件并提供其自身逻辑的新控件的基类. |
x:Class ="FirstExample.MainPage" | 这是一个部分类声明,它将标记连接到其中定义的部分类代码. |
xmlns ="https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml/presentation" | 映射Silverlight客户端/框架的默认XAML命名空间. |
xmlns:x ="http://schemas.microsoft.c om/winfx/2006/xaml" | XAML语言的XAML名称空间,它将其映射到x:前缀. |
xmlns:d ="https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/expression/blend/2008" | XAML命名空间用于设计器支持,特别是Microsoft Visual Studio的XAML设计界面中的设计器支持和Microsoft Expression Blend. |
xmlns:mc ="http://schemas.openxmlforma ts.org/markup-compatibility/2006" | 表示并支持用于读取XAML的标记兼容模式. |
> | 根的对象元素结束. |
< Grid> ;</Grid> | 这些是空网格对象的起始和结束标记. |
</UserControl> | 关闭对象元素. |
XAML的语法规则几乎与XML的规则相似.如果查看XAML文档,您会注意到它实际上是一个有效的XML文件.反之亦然,因为在XML中,属性的值必须是字符串,而在XAML中,它可以是一个不同的对象,称为属性元素语法.
Object元素的语法以左尖括号(<)开头,后跟对象名称,例如按钮.
定义了该对象元素的属性和属性.
对象元素必须用正斜杠(/)后跟一个右尖括号(>)后面.
示例没有子元素的简单对象如下所示.
< Button/>
具有某些属性&minus的对象元素的示例;
<Button Content = "Click Me" Height = "30" Width = "60"/>
定义属性的替代语法示例(属性元素语法) :
<Button> <Button.Content>Click Me</Button.Content> <Button.Height>30</Button.Height> <Button.Width>60</Button.Width> </Button>
具有子元素的对象示例:StackPanel包含Textblock作为子元素.
<StackPanel Orientation = "Horizontal"> <TextBlock Text = "Hello"/> </StackPanel/>
XAML最初并不是为Silverlight发明的.它来自Windows Presentation Foundation的WPF. Silverlight通常被描述为WPF的子集.这并不严格,因为Silverlight可以做一些WPF无法做到的事情.即使功能重叠,两者在细节上也略有不同.
说WPF和更准确Silverlight在很多方面非常相似.尽管存在差异,但看看Silverlight借用WPF的XAML功能仍然可以提供信息.例如,Silverlight为位图和可缩放形状提供图形基元.
它还提供用于呈现视频和音频的元素.
它具有简单的格式化文本支持,您可以为任何元素设置动画.如果您了解WPF,那么您将很熟悉此功能集.
重要的一点是,您不能使用WPF XAML并在Silverlight中使用它.
虽然有相似之处,但您也会发现许多细微差别.
XAML定义用户界面的外观和结构.但是,如果您希望应用程序在用户与其交互时执行任何有用的操作,则需要一些代码.
每个XAML文件通常与源代码文件相关联,我们将其称为后面的代码.各种Microsoft框架使用这个术语.
后面的代码通常需要使用XAML中定义的元素,要么检索有关用户输入的信息,要么显示给用户的信息.
在下面给出的XAML代码中,定义了 TextBlock 和按钮.默认情况下,当应用程序运行时,它将在网页上显示文本" Hello World!"和一个按钮.
<UserControl x:Class = "FirstExample.MainPage" xmlns = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/expression/blend/2008" xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable = "d" d:DesignHeight = "300" d:DesignWidth = "400"> <Grid x:Name = "LayoutRoot" Background = "White"> <StackPanel> <TextBlock x:Name = "TextMessage" Text = "Hello World!" Margin = "5"> </TextBlock> <Button x:Name = "ClickMe" Click = "ClickMe_Click" Content = "Click Me!" Margin = "5"> </Button> </StackPanel> </Grid> </UserControl>
后面的代码可以访问以 x命名的任何元素:名称指令.
命名元素可通过代码后面的字段获得,允许代码以通常的方式访问这些对象及其成员.
x:前缀表示该名称不是普通属性.
x:名称是XAML编译器的一个特殊信号,我们想要在后面的代码中访问该对象.
下面是按钮单击事件实现,其中 TextBlock 文本已更新.
using System.Windows; using System.Windows.Controls; namespace FirstExample { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void ClickMe_Click(object sender, RoutedEventArgs e) { TextMessage.Text = "Congratulations! you have created your first Silverlight Applicatoin"; } } }
XAML是不是设计UI元素的唯一方法.您可以在XAML中声明对象,也可以在代码中声明/写入.
XAML是可选的,但尽管如此,它仍然是 Silverlight 设计.
XAML编码的目标是让视觉设计师能够直接创建用户界面元素.因此, Silverlight 旨在通过标记来控制用户界面的所有视觉方面.