XAML
是一种声明性标记语言。XAML 简化了为 .NET Framework 应用程序创建 UI 的过程。您可以在声明性 XAML 标记中创建可见的
UI 元素,然后使用代码隐藏文件(通过分部类定义与标记相连接)将 UI 定义与运行时逻辑相分离。XAML
直接以程序集中定义的一组特定后备类型表示对象的实例化。 XAML 实现了一个工作流,通过此工作流,各方可以采用不同的工具来处理应用程序的
UI 和逻辑。
以文本表示时,XAML 文件是通常具有 .xaml 扩展名的 XML 文件。 可通过任何 XML 编码对文件进行编码,但通常编码为 UTF-8。
特点:
1. 具有 .xaml 扩展名的 XML 文件,格式和XML一样
2. 在XAML中定义的元素其实是程序集中定义的类型对象
3. 每一个WP7应用程序中的.xaml文件,都有一个与之对应的代码隐藏文件(XAML文件名+.cs)
XAML文件与代码隐藏文件
由于XAML文件只负责用于表现UI,而UI对应的控制逻辑通常是由与之对应的代码隐藏文件来负责的。在WP7应用程序中,每一个WP7应用程序中
的.xaml文件,都有一个与之对应的代码隐藏文件(XAML文件名+.cs),例如:MainPage.xaml对应的代码隐藏文件名字为
MainPage.xaml.cs。二者通过XAML文件根元素中x:Class前缀进行连接指定。当UI上的控件产生了事件之后,会通过x:Class
前缀中指定的代码隐藏文件命名空间和类名,找到UI处理逻辑,从而进行事件处理(那当然,还要在控件的事件属性中指定事件处理方法例如下面代码:
在根元素x:Class中指定了命名空间和类名为MyTes.MainPage,在Button元素中指定了按钮处理方法Btn_Click,当用户按下按钮时,自动回调代码隐藏文件MainPage.xaml.cs中的Btn_Click事件处理方法。
MainPage.xaml文件
<phone:PhoneApplicationPage
x:Class="MyTest.MainPage"
...>
<Button Click="Btn_Click" />
</phone:PhoneApplicationPage>
MainPage.xaml.cs代码隐藏文件
namespace MyTest
{
public partial class MainPage : PhoneApplicationPage
{
private void Btn_Click (object sender, RoutedEventArgs e)
{
....
}
}
属性语法
对象的属性通常可表示为对象元素的特性。属性语法命名在属性语法中设置的属性,后跟赋值运算符 (=)。属性的值始终以包含在引号中的字符串的形式进行指定。
属性语法是最简单有效的属性设置语法,并且对于曾使用过标记语言的开发人员而言在使用中是最直观的语法。例如,以下标记将创建一个具有红色文本和蓝色背景的按钮,还将创建指定为 Content 的显示文本。
<Button Background="Blue" Foreground="Red" Content="This is a button"/>
属性对象元素语法
对于对象元素的某些属性,属性语法是不可能实现的,因为无法在属性语法的引号和字符串限制内充分地表达提供属性值所必需的对象或信息。对于这些情况,可以使用另一个语法,即属性对象元素语法。
属性元素对象开始标记的语法为 <类型名称
.属性名称
>。 通常,该标记的内容是类型的一个对象元素,属性会将该元素作为其值。指定内容之后,必须用一个结束标记结束属性元素。结束标记的语法为 </类型名称
.属性名称
>。
<Button>
<Button.Background>
<SolidColorBrush Color="Blue"/>
</Button.Background>
<Button.Foreground>
<SolidColorBrush Color="Red"/>
</Button.Foreground>
<Button.Content>
This is a button
</Button.Content>
</Button>
内容属性
如果一个类的内容属性为该类中的唯一一个内容属性,对象元素的子元素可以用于设置该内容属性的值。换言之,仅对内容属性而言,您可以在 XAML 标记中设置该属性时省略属性元素,并在标记中生成更直观的父级/子级形式。
<Border>
<TextBox Width="300"/>
</Border>
当然,你也可以显示的的标明,设置了元素的内容属性为子元素。
<Border>
<Border.Child>
<TextBox Width="300"/>
</Border.Child>
</Border>
集合语法
XAML 语言包含一些优化,可以生成可读性更好的标记。其中的一项优化是:如果某个特定属性采用集合类型,则您在标记中声明为该属性的值内的子元素的项将成为集合的一部分。在这种情况下,子对象元素的集合是设置为集合属性的值。
下面的示例演示为 GradientStops 属性设置值的集合语法:
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.0" Color="Red" />
<GradientStop Offset="1.0" Color="Blue" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
XAML 根元素和 XAML 命名空间
一个 XAML 文件只能有一个根元素,这样才能同时成为格式正确的 XML 文件和有效的 XAML
文件。例如每个WindowsPhone的应用程序XAML都只有一个<phone:PhoneApplicationPage></
phone:PhoneApplicationPage > 根元素。
根元素还包含特性 xmlns , xmlns:x,xmlns:phone,如下表所示。
元素名
|
释义
|
<phone:PhoneApplicationPage
|
根元素的开始对象元素
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
默认 XAML 命名空间
|
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;
assembly=Microsoft.Phone"
|
命名空间phone引用了程序集Microsoft.Phone中的命名空间
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
XAML 语言 XAML 命名空间
|
x:Class="ExampleNamespace.ExampleCode"
|
分部类声明,它将标记连接到为分部类定义的代码隐藏文件
|
>
|
根的对象元素的末尾。由于该元素包含子元素,因此对象未结束
|
这些特性向 XAML 处理器指明哪些 XAML
命名空间包含标记将要作为元素引用的后备类型的类型定义。xmlns 特性明确指示默认的 XAML 命名空间。 在默认的 XAML
命名空间中,可以不使用前缀指定标记中的对象元素。对于大多数 WP7应用程序方案中,默认的 XAML 命名空间均映射到为 WPF 命名空间
http://schemas.microsoft.com/winfx/2006/xaml/presentation。xmlns:x 特性指示另外
一个 XAML 命名空间,该命名空间映射
XAML 语言命名空间 http://schemas.microsoft.com/winfx/2006/xaml。
使用 xmlns 定义用法范围和名称范围映射的做法符合 XML 1.0 规范。 XAML 名称范围与 XML 名称范围的不同仅在于:XAML 名称范围还包含有关进行类型解析和分析 XAML 时名称范围的元素如何受类型支持的信息。
请注意,只有在每个 XAML
文件的根元素上, xmlns 特性才是绝对必需的。 xmlns 定义将适用于根元素的所有子代元素(此行为也符合 xmlns 的 XML 1.0
规范。)同时允许根以下的其他元素上具有 xmlns 特性,这些特性将适用于定义元素的任何子代元素。 但是,频繁定义或重新定义 XAML
命名空间可能会导致 XAML 标记样式难以阅读。
其 XAML 处理器的实现包括可识别核心程序集的基础结构。因此,为了引用来自WP7程序集中的 XAML 元素,只需将默认 XAML 命名空间声明为默认 xmlns。
x: 前缀
在上面的根元素示例中,前缀 x: 用于映射 XAML 命名空间
http://schemas.microsoft.com/winfx/2006/xaml,该命名空间是支持 XAML 语言构造的专用 XAML
命名空间。 在这整个 SDK 的项目模板、示例以及文档中,此 x: 前缀用于映射该 XAML 命名空间。 XAML 语言的 XAML
命名空间包含多个将在 XAML 中频繁用到的编程构造。下面列出了将用到的最常见的x: 前缀编程构造:
-
x:Key
:为 ResourceDictionary中的每个资源设置唯一的键。 在典型的 WP7 应用程序标记中的所有 x: 用法中, x:Key 将可能占到
90%。
-
x:Class
:为 XAML 页提供“代码隐藏的类”
指定 CLR 命名空间和类名,也就是说每个XAML文件后面都有一个与之对应的代码隐藏类(其实就是对应的XAML文件名+.cs)。 必须具有这样一个类才能支持每个
WP7 编程模型的代码隐藏,而正是因为如此,即使没有资源,也几乎总是能看到映射的 x:。
-
x:Name
:经过XAML处理器处理所有对象元素后,为XAML代码中的实例指定运行时对象名称。 通常,您将为 x:Name
经常使用
WP7 定义的等效属性。 此类属性特定映射到 CLR 后备属性,因此更便于进行应用程序编程,在应用程序编程中,您经常使用运行时代码从初始化的 XAML 中查找命名元素。最常见的此类属性是 FrameworkElement .Name
。
-
x:Static
:启用一个返回静态值的引用,该静态值只能是一个 XAML 兼容属性。
-
x:Type
:根据类型名称构造一个 Type
引用。 它用于指定采用 Type
(例如 Style .TargetType
)的特性,但属性经常具有本机的字符串到 Type
的转换功能,因此使用x:Type
标记扩展用法是可选的。
XAML 中的自定义前缀和自定义类型
对于自定义程序集或 PresentationCore、PresentationFramework 和 WindowsBase 的 WP7 核心以外的程序集,可以将该程序集指定为自定义 xmlns
映射的一部分,就可以在 XAML 中引用该程序集中的类型。
下面是一个说明自定义前缀如何在 XAML
标记中工作的基本示例。前缀 custom 在根元素标记中定义,并映射为随应用程序一同打包的一个特定程序集。 此程序集包
含 NumericUpDown 类型。 通过使用该前缀,可以声明此NumericUpDown 控件的实例对象元素,当 XAML
分析器解析到当前元素时,通过前缀custom的声明中指定的命名空间,可找到包含该类型的 XAML
命名空间,从而找到包含自定义类型的程序集的位置。
<phone:PhoneApplicationPage
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:custom="clr-namespace:NumericUpDownCustomControl;assembly=CustomLibrary"
>
<StackPanel Name="LayoutRoot">
<custom:NumericUpDown Name="numericCtrl1" Width="100" Height="60"/>
...</StackPanel>
</phone:PhoneApplicationPage>
转自:http://blog.csdn.net/mr_raptor/article/details/7227260
分享到:
相关推荐
- XAML语法详解 - 动态数据绑定 - XAML与其他技术的集成 - **学习目标:** - 掌握XAML语法细节 - 实现高效的数据绑定方案 - 了解XAML与C#等其他技术的结合方式 - **第8章:元素与属性(第165页)** - **...
### 构建Windows Phone7应用程序知识点详解 #### 概述 构建Windows Phone 7应用程序主要涉及使用Microsoft Visual Studio 2010 Express for Windows Phone这一集成开发环境(IDE)来进行开发工作。此外,还需要掌握...
此外,Windows Phone开发还包括学习Silverlight for Windows Phone、XAML语法、 Mango SDK 更新、Live Tiles的使用、Push Notifications、以及与Azure集成等。开发者还需要熟悉Visual Studio的工具集,包括模拟器和...
《Windows Phone 7简单计算器详解》 Windows Phone 7(简称WP7)是微软公司推出的一款智能手机操作系统,它以其独特的用户界面和丰富的应用程序吸引了众多用户。在这个系统上,开发人员可以利用微软提供的工具和...
**Silverlight for Windows Phone 7 知识点详解** **一、Silverlight 概述** Silverlight 是由 Microsoft 开发的一种富互联网应用程序(RIA)框架,用于构建具有丰富媒体体验和交互式用户界面的Web应用。它最初是...
### Windows Phone 8.1 入门教程:页面跳转详解 #### 一、引言 Windows Phone 8.1 是微软推出的移动操作系统之一,它为开发者提供了丰富的API和工具来构建高质量的应用程序。在本教程中,我们将深入探讨Windows ...
### Xamarin XAML语言教程知识点详解 #### 一、Xamarin及XAML概述 - **Xamarin**: 是一款跨平台移动应用开发框架,支持iOS、Android、Windows Phone等平台的应用开发。它采用C#语言编写,并提供了丰富的API来访问...
### Windows Phone 8.1 入门教程:文件存储与数据库操作详解 #### 一、概述 在Windows Phone 8.1开发过程中,文件存储和数据库操作是非常重要的环节。本教程将详细介绍如何在Windows Phone 8.1应用中实现文件存储...
《Windows Phone平台上的C#计算器应用开发详解》 在移动操作系统领域,Windows Phone虽然市场份额相对较小,但仍有其独特的魅力和开发者群体。本篇文章将深入探讨如何使用C#语言在Windows Phone平台上开发一款...
它最初是为了Windows Presentation Foundation (WPF)而设计的,但现在也被广泛应用于Silverlight、Windows Phone以及UWP(Universal Windows Platform)等平台上。XAML的主要优势在于它能够清晰地描述UI组件及其属性...
《Windows Phone 7 开发入门:HelloPhone 示例详解》 Windows Phone 7(简称WP7)是微软针对移动设备推出的一款操作系统,旨在提供强大的应用程序平台和用户体验。"WP7-HelloPhone"是一个基础的示例项目,用于帮助...
《装甲将军:Windows Phone端口开发详解》 在IT领域,游戏移植是一项常见的技术工作,尤其是将经典游戏如“装甲将军”这样的战略游戏带到移动平台,例如Windows Phone。本篇文章将深入探讨“装甲将军”(Panzer ...
《Time_App:Windows Phone 8.1 计时器应用详解》 在移动设备上,计时器应用程序是日常生活中不可或缺的工具,尤其对于需要精确时间管理的人来说。本文将深入探讨由开发者Mukosame创建的"Time_App",一个专为...
本内训资料是针对Windows Phone开发的,尽管Windows Phone市场占有率已经不如从前,但WPF技术在桌面应用开发中仍具有广泛的应用。 首先,学习WPF的第一手资料应该涵盖以下几个核心概念: 1. **XAML**:Extensible ...
本项目是使用Windows Phone 8(简称WP8)平台进行开发的非人工智能版本,主要目的是供学习者熟悉C#编程语言以及XAML(Extensible Application Markup Language)界面设计技术。下面我们将深入探讨如何利用C#和XAML来...
在移动设备上开发五子棋小游戏,可以提供休闲娱乐的平台,尤其在WP8(Windows Phone 8)平台上,利用C#编程语言和XAML(Extensible Application Markup Language)进行界面设计,可以创建出具有良好用户体验的五子棋...
《Windows8小游戏开发详解》 在Windows 8平台上开发小游戏是一项充满挑战与乐趣的任务,它融合了编程技术、用户交互设计以及系统API的巧妙运用。本项目“想打便打--升级版(肖维哲)win8”便是一个生动的例子,展示了...
1. **DreamSpark Standard**:为学生和教师提供了一系列开发工具,包括VS2010、Express for Windows Phone等。 2. **DreamSpark Premium**:除了Standard中的工具外,还提供了更多高级工具和支持,如Visual Studio ...