WPF入门之XAML初窥

Overview: 很早就想写些文章来总结一下自己学习一些新知识的经历,一来可以在日后查找,其到一个索引的作用;二来可以和爱好技术的朋友们共同交流,鉴于工作缘故始终无法抽身写。最近源于对WPF和Silverlight的浓厚兴趣和项目中要用的缘故,特此和大家分享一些学习WPF/Silverlight的过程。这个系列会简单回顾一些WPF中基本的概念和入门知识,以此来构成创建WPF程序(甚至于Silverlight程序,其在很大程度上有些依赖于WPF)的基础。本人不曾写过很多blog,再者WPF本身对程序员的一些创新思维挑战对我来说都是很大的难点,不周之处且请各位大侠指点。不胜感谢。

Topic: 本文为此系列的第一张,将大致介绍一下在.NET3.0中正式启用的XAML的相关概念以及其在WPF中的应用。

总所周知,随着.NET Framework 3.0的到来,其包含的几个组件Windows Workflow Fundation, Windows Communication Foundation, Windows Cardspace以及我们要讲的Windows Presentation Foundation逐渐吸引了大家很多的目光,作为.NET Framework的一部分,其提供了很多优越性而使得我们的编程模式以至变成思路都发生了很多的改观。而在其最主要的几个优点上,其引入的"声明式描述"带给我们焕然一新的感觉,而这就是XAML的主要功劳。XAML作为可以在很大程度上替代一些coding语句的声明式XML,.NET Framework提供了对XAML的编译支持,而这无非又让我们看到了和HTML/XML很相似的风格,这种看似很随意,很灵活的风格给我们带来了新的编程体验。WF, WPF都采用XAML来进行部分过程的描述。

1. 什么是XAML?

XAML是一种相对简单、通用的声明式变成语言,它适合于构建和初始化.NET对象。它由一些规则和关键字构成,但是它自己没有任何有意义的元素。在没有WPF/WF框架的基础上讨论XAML就象在没有.NET Framework的基础上讨论C#一样是没有任何意义的,因为它本身并不能提供任何有意义的元素,需要由WPF/WF框架或者说.NET XAML编译器和WPF应用框架来承载、理解XAML的表达意义。由于XAML的通用性,实际上你可以把它应用于任何.NET技术。然而,是否在使用WPF时使用XAML是可选的,每一个XAML能做的事情完全可以由任何一种你喜欢的.NET语言来实现,但是反过来是不行的。在后边的解释中你会看到,实际上针对XAML的解释,XAML编译器是把XAML语句与.NET对象/类型联系在一起的,将XAML纳入和.NET类型相同的模型中控制是他们为什么能够互相兼容的重要原因。

例如如下的XAML片段和.NET C#语句所表达的结果是相同的:

XAML: <Button xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation Content="OK" />

C#:   System.Windows.Controls.Button btnOk = new System.Windows.Controls.Button();

b.Content = "OK";

2. XAML元素及特性2.1 XAML命名空间

XAML文件的跟对象元素必须至少有一个XML命名空间,用于验证自己和其子元素。你可以在根元素或子元素上声明额外的XML命名空间来标识你的自定义元素,但每个命名空间下的标识符都必须有一个唯一的前缀。我们把http://schemas.microsoft.com/winfx/2006/xaml/presentation作为默认(主要)的命名空间,我们在使用大多数控件时都使用此主命名空间,因为WPF通过硬编码的方式将此命名空间与.NET的命名空间进行了映射。而对于次命名空间,我们通常需要添加前缀来表示其命名空间在以下范围内被引用,中就像C#中的using System;一样,声明了一个可以引用的命名空间。以下代码片段演示了如何使用主命名空间和次命名空间:

<UserControl x:Class="MediaPlayer.Page"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Width="450" Height="300">
  <Grid x:Name="LayoutRoot" Background="White">
    <TextBlock FontSize="12" FontWeight="Bold" HorizontalAlignment="Center">Vedio Player</TextBlock>
  </Grid>
</UserControl>

2.2 属性元素(Property Element)

属性元素本质上是为了增加在元素中包含子元素的一种方式。它是XAML提供的用来替代更加详细的语法来设置属性值的方法。例如:

<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" >
  <Button.Content>
    </Rectangle Height="40" Width="40" Fill="Black" />
  </Button.Content>
</Button>

Content属性现在被设置为一个XML元素而不是XML属性,Button.Content中的句点用来区分对象元素与属性元素。属性元素总会以“类型名.属性名”的形式出现并包含在“类型名”对象元素中。说白了,属性元素是为了扩展某类型的属性而存在的。

时间: 2024-08-24 19:18:19

WPF入门之XAML初窥的相关文章

8天入门wpf—— 第二天 xaml详解

            首先我们还是新建一个空项目,看一下VS给我们默认生成的xaml结构. <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title=&qu

iOS Animation初窥

引言 一款App是否足够吸引人一方面是需要丰富的内容,另一方面就是要足够人性化的交互,还有一些锦上添花的动画效果,在这里我们讨论一下关于Animation的基本实现,推荐大家试用FaceBook Paper,里面包含了大量的非原生动画效果,Paper团队甚至封装了相应的开源库Pop,让开发者接入自定义动画动画也十分简便.动画的接入要适当,否则用户面对眼花缭乱的动画效果,都会无从下手.这里有个基于Pop的Demo 当然导入一个复杂的第三方库可能有些小题大做,所以我们开始从最基本的创作Animati

WPF入门教程系列二——Application介绍

原文:WPF入门教程系列二--Application介绍 一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在.和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离. 微

百度竞价初窥端倪篇

  前情提要:要想花低于竞争对手的钱,取得比竞争对手好的排名,并要最大化得提升转化率,必须做到比对手更细心.更耐心.更勤快,每天不求多,只求质,每天要养成分析数据的习惯! 百度竞价--初窥端倪篇 1,百度竞价--关键词选择漫谈 指数高不一定转化率高,指数低未必转化率低;流量与成交量并不是正比关系,必须要一分为二的去分析;防止恶意点击和无效点击取决于你对关键词的筛选,选词之前要搞清楚你打算把用这个词引进来的人怎么处置!是让他看一眼就走,还是让他哭着淘一些钱给你,这是一个技巧! 比如:我现在需要做竞

初窥Spark

​ 11月26日,IBM资深软件工程师朱志辉老师,在DBA+社群DB2用户群进行了一次主题为"初窥Spark"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢朱志辉老师对DBA+社群给予的大力支持.  嘉宾简介   IBM中国开发中心高级软件工程师 具有多年的数据库软件开发设计经验,擅长解决复杂的数据库应用系统问题及性能优化,拥有DB2多项认证和Oracle OCP证书 合作出版了<DB2设计,管理与性能优化艺术><DB2性能管理与实战>

【初窥javascript奥秘之事件冒泡】那些年我们一起冒的泡

原文http://www.cnblogs.com/yexiaochai/archive/2013/04/23/3037064.html [初窥javascript奥秘之事件冒泡]那些年我们一起冒的泡 前言 若是我说会有此文又是因为一次面试的话,我自己都不知道该怎么形容我的心情了,好似我的所有动力皆来自于面试似的. 其实不是这样的,我原来一个项目经理对我说,隔一两个月出去面试下,一来你会知道自己的不足知道怎么提高,二来你就知道自己涨价没. 现在回想起来他说的是很对的,面对这次的团队解散,我反而不那

【初窥javascript奥秘之Ajax】简述下你所知道的Ajax?

原文 http://www.cnblogs.com/yexiaochai/archive/2013/04/24/3037069.html [初窥javascript奥秘之Ajax]简述下你所知道的Ajax? 前言 ajax已经流行很多年了,现在来说它是否已经晚了呢???特别是有这样框架那样框架后,还有几个人认识原生ajax呢?我们每天都会用到的东西你到底对他了解吗? 在最近一次面试上不幸被问到了,原以为很熟悉的东西你会发现你对他根本不熟悉!要说熟悉AJAX的话你需要毫不犹豫回答以下问题: 1 不

[转]Silverlight 2 快报 和 Silverlight 3 初窥

[原文地址]Update on Silverlight 2 - and a glimpse of Silverlight 3 [原文发表日期] Sunday, November 16, 2008 11:01 PM 我们上个月发布了Silverlight 2. 在过去的4个星期里,Silverlight 2的最终版被下载和安装到了超过1亿台用户机器之上.最近还通过微软SMS和微软更新程序发布到了企业管理员手中,允许他们在企业内做自动部署. Internet上超过四分之一的计算机现在安装了某个版本的

学习WPF——了解WPF中的XAML

XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象 XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素   了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是Window,一个是Grid Window是WPF顶级元素的一种,还有另外两种顶级元素Page和Ap