- Silverlight 教程
- Silverlight - 首页
- Silverlight - 概览
- Silverlight - 环境设置
- Silverlight - 入门
- Silverlight - XAML 概述
- Silverlight - 项目类型
- Silverlight - 固定布局
- Silverlight - 动态布局
- 受约束与不受约束
- Silverlight - CSS
- Silverlight - 控件
- Silverlight - 按钮
- Silverlight - 内容模型
- Silverlight - ListBox
- Silverlight - 模板
- Silverlight - 可视状态
- Silverlight - 数据绑定
- Silverlight - 浏览器集成
- Silverlight - 浏览器外
- Silverlight - 应用程序和资源
- Silverlight - 文件访问
- Silverlight - 视图模型
- Silverlight - 输入处理
- Silverlight - 隔离存储
- Silverlight - 文本
- Silverlight - 动画
- Silverlight - 视频和音频
- Silverlight - 打印
- Silverlight 有用资源
- Silverlight - 快速指南
- Silverlight - 有用资源
- Silverlight - 讨论
Silverlight - XAML 概述
在使用 Silverlight 时,您会遇到的第一件事之一就是 XAML。XAML 代表可扩展应用程序标记语言。它是一种基于 XML 的简单声明性语言。
在 XAML 中,创建、初始化和设置具有层次关系的对象属性非常容易。
它主要用于设计 GUI。
它也可以用于其他目的,例如,在工作流基础中声明工作流。
基本语法
当您创建一个新的 Silverlight 项目时,您将在MainPage.xaml中看到一些默认的 XAML 代码,如下所示。
<UserControl x:Class = "FirstExample.MainPage" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "http://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 = "http://schemas.microsoft.com /winfx/2006/xaml/presentation" | 映射 Silverlight 客户端/框架的默认 XAML 命名空间。 |
xmlns:x = "http://schemas.microsoft.c om/winfx/2006/xaml" | XAML 语言的 XAML 命名空间,将其映射到 x: 前缀。 |
xmlns:d = "http://schemas.microsoft.com /expression/blend/2008" | XAML 命名空间旨在用于设计器支持,特别是 Microsoft Visual Studio 和 Microsoft Expression Blend 中的 XAML 设计界面的设计器支持。 |
xmlns:mc = "http://schemas.openxmlforma ts.org/markup-compatibility/2006" | 指示并支持用于读取 XAML 的标记兼容性模式。 |
> | 根对象的元素结束。 |
<Grid></Grid> | 这些是空网格对象的开始和结束标签。 |
</UserControl> | 关闭对象元素。 |
XAML 的语法规则与 XML 的语法规则几乎相同。如果您查看 XAML 文档,您会注意到它实际上是一个有效的 XML 文件。反之则不然,因为在 XML 中,属性的值必须是字符串,而在 XAML 中它可以是不同的对象,这被称为属性元素语法。
对象元素的语法以左尖括号 (<) 开始,后跟对象的名称,例如 Button。
定义该对象元素的属性。
对象元素必须以正斜杠 (/) 后跟右尖括号 (>) 关闭。
下面显示了一个没有子元素的简单对象的示例。
<Button/>
带有某些属性的对象元素示例 -
<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/>
为什么 Silverlight 中要使用 XAML
XAML 最初并非为 Silverlight 发明。它来自 WPF,即 Windows Presentation Foundation。Silverlight 通常被描述为 WPF 的一个子集。这并不完全正确,因为 Silverlight 可以做一些 WPF 做不到的事情。即使在功能重叠的地方,这两个方面在细节上也略有不同。
更准确地说,WPF 和 Silverlight 在许多方面都非常相似。尽管存在差异,但查看 Silverlight 从 WPF 借鉴的 XAML 功能仍然很有帮助。例如,Silverlight 提供了用于位图和可缩放形状的图形基元。
它还提供用于渲染视频和音频的元素。
它具有简单的格式化文本支持,并且您可以对任何元素进行动画处理。如果您了解 WPF,那么此功能集将很熟悉。
需要注意的一点是,您不能使用 WPF XAML 并将其用于 Silverlight。
尽管存在相似之处,但您还会发现许多细微的差异。
XAML 和代码隐藏
XAML 定义用户界面的外观和结构。但是,如果希望应用程序在用户与之交互时执行任何有用的操作,则需要一些代码。
每个 XAML 文件通常都与一个源代码文件关联,我们将其称为代码隐藏。各种 Microsoft 框架都使用此术语。
代码隐藏通常需要使用 XAML 中定义的元素,以便检索有关用户输入的信息或向用户显示信息。
在下面给出的 XAML 代码中,定义了TextBlock和Button。默认情况下,当应用程序运行时,它将在网页上显示文本“Hello World!”和一个按钮。
<UserControl x:Class = "FirstExample.MainPage" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "http://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:Name指令命名的任何元素。
命名元素通过代码隐藏中的字段可用,允许代码以通常的方式访问这些对象及其成员。
x:Prefix表示该名称不是普通属性。
x:Name是 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旨在使从标记控制用户界面的所有视觉方面成为可能。