- Silverlight 教程
- Silverlight - 主页
- Silverlight - 概述
- Silverlight - 环境设置
- Silverlight - 入门
- Silverlight - XAML 概述
- Silverlight - 项目类型
- Silverlight - 固定布局
- Silverlight - 动态布局
- 受约束与无约束
- Silverlight-CSS
- Silverlight - 控件
- Silverlight - 按钮
- Silverlight - 内容模型
- Silverlight - 列表框
- 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 文件提到了不同类型的信息;下表简要描述了所有这些内容。
信息 | 描述 |
---|---|
<用户控制 | 提供用于定义新控件的基类,该新控件封装现有控件并提供其自己的逻辑。 |
x:Class = "FirstExample.MainPage" | 它是一个分部类声明,它将标记连接到其中定义的后面的分部类代码。 |
xmlns =“http://schemas.microsoft.com/winfx/2006/xaml/presentation” | 映射 Silverlight 客户端/框架的默认 XAML 命名空间。 |
xmlns:x = "http://schemas.microsoft.com/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 的标记兼容模式。 |
> | 根对象元素的结尾。 |
<网格></网格> | 这些是空网格对象的开始和结束标签。 |
</用户控制> | 关闭对象元素。 |
XAML 的语法规则几乎与 XML 的语法规则类似。如果您查看 XAML 文档,您会发现它实际上是一个有效的 XML 文件。反之亦然则不然,因为在 XML 中,属性的值必须是字符串,而在 XAML 中,它可以是不同的对象,称为 Property 元素语法。
Object 元素的语法以左尖括号(<) 开头,后跟对象的名称,例如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 :前缀表示该名称不是普通属性。
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 的目标是使通过标记控制用户界面的所有视觉方面成为可能。