Windows Phone XAML基础教程

 我在上一篇博文中说过,XAML是一种基于XML的用来创建和初始化.NET对象的语言。虽然XAML可以在更多的CLR类型中进行运用,但在Silverlight中它是以一种人类可创作的方式来描述UI。

一, 初识XAML:
XAML代码:

 <UserControl x:Class="SilverlightApplication1.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">
     <!--http://schemas.microsoft.com/winfx/2006/xaml/presentation:核心Silverlight命名空间
        http://schemas.microsoft.com/winfx/2006/xaml:是XAML命名空间
     -->
 
     <Grid x:Name="LayoutRoot" Background="White">
         <Button
            x:Name="button"
            Width="200"
            Height="25"
             Click="button_Click"
            >
             Click me,baby,one more time!
         </Button>
     </Grid>
 </UserControl>

运行结果,如图:

与XAML代码等效的C#代码:

 代码如下 复制代码

 partial class MainPage : UserControl//类MainPage从UserControl继承
     {
        Button button;//声明一个Button类对象

         void InitializeComponent()
         {
            //初始化button
             button = new Button();
             button.Width=200;
             button.Height=25;
            button.Click+=button_Click;//添加事件

          this.AddChild(button);//调用AddChild()方法将button添加到当前对象中
        }
    }

从以上这个简单的实例中我们可以得出如下两点认识:

  1,通常,一个XAML元素就是一个.NET类名,一个XAML属性(Attribute)就是一个类的属性(Property)名或者一个类的事件名,XAML被尽可能地设计成从XML到.NET的直接映

     射.这一点认识非常重要.

  2,我在上一篇中定义XAML的时候说过,XAML语言是基于XML语言的,所以它的表现形式与XML非常相似.

有了以上两点认识后,下面我们开始XAML的学习了.

为了方便解释后面的内容,我在这里再创建一个基本的XAML例子,作为后面内容的公共实例:

 代码如下 复制代码

<UserControl x:Class="SilverlightApplication1.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Grid>
    <Ellipse Fill="LightBlue"/>
    <TextBlock>
        Name:<TextBlock Text="{Binding Name}"/>
    </TextBlock>
</Grid>
</UserControl>

 
二,命名空间:

  当在XAML文件中使用<TextBlock>元素时,Silverlight解析器会识别出来你想要创建TextBlock类的一个实例.然而,它无需知道使用的TextBlock类是什么的.毕竟,即便Silverlight命名空间只包含一个单独的名为TextBlock的类,但谁也不敢保证你不会创建一个自定义的同名的类.明确地说,你需要一种方法来指明Silverlight命名空间信息,从而明确使用元素.这就是为什么要定义命名空间的原因.

  在Silverlight中,通过将XML命名空间映射到Silverlight命名空间来解析类的.这一点的理解很重要.

  下面我还是拿上面的例子来讲解.

 代码如下 复制代码

<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</UserControl>

  这里根元素<UserControl>中定义了两个最基本的命名空间(当然还有其它命名空间后面会介绍).

  1,http://schemas.microsoft.com/winfx/2006/xaml/presentation是核心Silverlight命名空间.它包含所有的Silverlight中的类,包括Grid,StackPanel,TextBlock以及

    Button,通常,这个命名空间没有使用命名空间前缀来声明,因此它就成了整个XAML文档的默认命名空间,也就是说,除非你特别指明,每一个元素都会被自动放入这个命名空间

    中.

  2,http://schemas.microsoft.com/winfx/2006/xaml是XAML命名空间.它包含多种XAML功能,可以让你控制文档如何被解析.这个命名空间通常会映射到x前缀.

 

  上面两个命名空间基本上就可以让你访问Silverlight元素的核心库了.不过如果你觉得不够,你还可以自定义命名空间,下面是自定义命名空间的语法.

  语法:

 代码如下 复制代码

  <UserControl x:Class="SilverlightApplication1.MainPage"

    xmlns:w="clr-namespace:Widgets;assembly=Widgets"

    ...

  XML命名空间声明设定了3方面的信息:

  1,XML命名空间前缀.注意你定义的命名空间前缀不要与其它的命名空间前缀冲突就可以了.

  2,.NET命名空间.在此例中.类被放置在Widgets命名空间中.

  3,程序集.在此例中,所使用的类是Widgets.dll程序集的一部分.假设你已经在Silverlight应用程序中添加了指向Widgets程序集的引用,它将会被自动包含进最终的XAP包里.

    一旦将.NET命名空间映射到XML命名空间,你就可以在XAML文档的任何地方使用它.例如,如果Widgets命名空间中包含名为HotButton的控件,你可以像下面这样创建实例

    了.

 代码如下 复制代码

  <w:HotButton Text="Click me" Click="DoSomething"></w:HotButton>

 
三,生成类:

  有一个在根元素的x:Class属性,在这里再展示一遍:

 代码如下 复制代码

<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
</UserControl>

  我分以下几点来解释:

  1,前缀"x:"是标准XML缩写,它表示这个特定的属性是由命名空间中的xmlns:x属性所指定.

  2,对于XAML编译器来说,x:Class属性就意味着需要生成基于XAML文件的类定义,而x:Class属性就是决定所生成的类名字,并且将它派生自根元素.在这里,所生成的类名为

     MainPage,它的基类为UserControl.

  3,你不一定要指定一个x:Class属性.假如我们忽略这个示例中的属性,那么根对象的类型将是UserControl,而不是生成的MainPage类.不过一般会指定这个属性.

  4,在选择了生成一个类时,它会提供一个通过XAML描述的简便方法来创建对象树.由于我们所生成的每一个MainPage实例都将包含一系列由XAML指定的对象,因此我们只需要

     使用普通的对象构造语法,如:

 代码如下 复制代码

    MainPage myMainPage=new MainPage();

 

时间: 2024-07-29 07:48:28

Windows Phone XAML基础教程的相关文章

30分钟学会正则表达式基础教程

基础教程|教程|正则表达式|正则 目录 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符转义 重复 字符类 反义 替换 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 最后,来点广告... 一些我认为你可能已经知道的术语的参考 网上的资源及本文参考文献 更新说明 本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它. 如何使用本教程 最重要

WEB标准中使用CSS的基础教程

css|web|web标准|基础教程 CSS过去经常被用来定义字体的属性,而现在可以用它来控制整个文档的布局.然而,为了有效的用CSS来控制布局,需要做一些不同的处理,这种不同是跟用表格布局相对比的. 为了CSS可以高效的控制布局,结构化.语义化的XHTML是必不可少的. 浏览器的支持 在过去几年,浏览器对CSS的支持程度已经改进了很多.不幸的是,浏览器的开发商好象对实施开放的标准并不感兴趣,所以不同浏览器对CSS的支持程度也大相径庭.就算是支持程度最好的浏览器,在软件中仍然有一些bug,使得浏

XSL基础教程第一章

基础教程   XSL介绍    XML的样式表语言XSL比CCS要复杂得多.      CSS:HTML的样式表语言    由于HTML使用预先确定的标记,因此这些标记的含义都很好理解:<p>元素定义一段,<h1>元素定义一个标题.浏览器知道如何显示这些元素.       使用CSS向HTML元素增加显示格式是一个简单的过程:很容易告诉浏览器用某种特殊字体或颜色来显示各个元素,浏览器也很容易理解.      XSL:XML的样式表    由于XML不使用预先确定的标记(我们可以根据

HTML基础教程:HTML 简介

html基础|基础教程 什么是HTML文件? HTML指超文本标签语言. HHTML文件是一个包含一些标签的文本文件. 这些标签告诉WEB浏览器如何显示页面. HTML文件必须有htm或者html作为文件扩展名. HTML文件可以由一个简单的文本编辑器创建. 做个实验如何? 第一步:如果您使用Windows,请启动记事本. 如果您使用Mac,请启动SimpleText. (在OSX中请使用TextEdit,并设置一下参数:在参数设置中选择Plain text字体替代Rich text字体,然后选

Asp基础教程(上)

基础教程|基础教程 一.Asp基本知识 1.Asp是Active Server Pages的简称,是解释型的脚本语言环境:2.Asp的运行需要Windows操作系统,9x下需要安装PWS:而NT/2000/XP则需要安装Internet Information Server(简称IIS):3.Asp和JSP的脚本标签是"<%%>",PHP的则可以设定为多种:4.Asp的注释符号是"'":5.使用附加组件,可以扩展Asp的功能. 例子: HelloWorl

Asp基础教程(下)

基础教程|基础教程 四.Asp组件的开发与使用: 1. 组件的特点? l 优点:n 调用方便,节省代码n 安全性高n 支持事务处理,多组件联合n 运行速度快n 升级.修改组件不需修改页面,因此扩展性好l 缺点:n 开发及调试困难 2. 如何使用VB开发? ⑴.打开VB>>New Project>>ActiveX DLL ⑵.修改项目名称为course ⑶.修改类模块的名字为conn_db ⑷.Project>> References,引用COM+ Service Typ

VBScript基础教程之一什么是 VBScript

vbscript|基础教程 Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的 Script 应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机 Script 和 Microsoft Internet Information Server 中的 Web 服务器 Script. 易学易用 如果您已了解 Visual Basic 或 Visual B

PHP 和 MySQL 基础教程(三)

mysql|基础教程 用 cookies 来跟踪识别用户 让我们来看看保存在浏览器中的内容.如果你用的是 IE5 ,在 windows 目录下有一个 cookies 的目录,里面有很多文本文件,文件名都是类似于 wudong@15seconds[1].txt 这样的,这就是浏览器用来保存值的 cookies 了.在以前的 IE 版本中, cookies 的内容是可以察看的,但现在内容已经被编码了.在浏览器得到一个 Web 页面之前,它会先看这个页面的域名,是否在 cookie 中存在,如果有相比

MS SQL基础教程:SQL Server 2000简介

SQL Server 是一个关系数据库管理系统它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的于1988 年推出了第一个OS/2 版本在Windows NT 推出后Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了Microsoft 将SQL Server 移植到Windows NT 系统上专注于开发推广SQL Server 的Windows NT 版本Sybase 则较专注于SQL Server在UNIX 操作系统上的应用在本书