【WPF系列】基础学习-XAML
引言
WPF框架中已经提到,WPF框架提供XAML基本服务。WPF中XAML的引入向开发者提供UI设计和代码分离的编程型。XAML是WPF中提出的一个具有重要意义的新技术,基本涉及WPF中所有UI开发。本设计所有UI代码都采用XAML。
XAML综述
XAML(可扩展应用标记语言的简称,可以称为zammel)是一种被用于.net对象实例的标记语言。尽管XAML是一种可以被应用于不同问题领域的技术,但它最初被设计时是作为WPF的一部分,WPF允许Windows开发人员建设富用户界面。你可以用相同的标准去建设WPF应用程序的用户界面。
从概念上说,XAML扮演的角色很像HTML,甚至就像是它的近亲,XHTML。XHTML允许你通过定义一些元素来标记一个普通的网页。相似地,XAML允许你定义元素来标记一个XAML的内容区域。操作XHTML元素,你可以用客户端的JavaScript。操作XAML元素,你要写客户端的C#代码。最后,XAML和XHTML共享相同的语法协定。类似XHTML,XAML也是一种基于XML的语言,它包含的元素可以由你的喜好来组织嵌套。
在本章中,你将得到对XAML的详细介绍,并且写一个简单的单页面程序。一旦你理解了XAML的主要规则,你将明白在WPF用户界面中什么是可能什么是不可能的,并且可以手工修改代码。通过探索XAML文档的标签,你也可以对作为WPF用户界面基础的对象模型了解的更充分,为更深一步的探索做好准备。
XAML特点
XAML是可扩展的,开发人员可以创建自定义的控件、元素和函数来扩展XAML。而且由于XAML各元素在本质上就是WPF类的映射,开发人员可以很轻松地使用面向对象的技术对XAML元素进行扩展。即开发人员可以开发一些自定义控件和组合元素,并将它公开给用户界面设计人员和其它的开发人员使用。
XAML是一种纯正的、用来描述用户界面构成元件和编排方式的标记语言。尽管有部分的XAML语法具备程序设计语言的特性(例如XAML中的Trigger和Transform),但是XAML并不是一种用于程序设计的语言,它的功能也不是为执行应用程序逻辑。
XAML是一种解析性的语言,尽管它也可以被编译。微软推荐XAML被编译成二进制语言程序标记语言BAML。XAML和BAML都可以被WPF解析,并且以一种和HTML相似的方式进行界面的呈现。但是和HTML不同的是,XAML是强类型化的,即HTML会忽略那些它不能识别的元素和属性,而XAML必须在识别所有的元素和属性的情况下,才对页面进行呈现。尽管在XAML中各个属性都是以字符串(例如Background)表示,但是这些字符串实际上代表的是WPF中的对象,只有被WPF识别的对象才可以作为元素的属性。
XAML和WPF类库紧密相关,所有可以在XAML中使用的元素其实都是一个类,例如<Button>元素就与类库中的System.Windows.Control.Button相对应。正是因为上述的继承关系以及XAML中的每个元素均代表一个WPF类,所以XAML也存在一些面向对象体系结构的特性。例如,一个元素从另外的一个XAML元素派生出来,那么该元素将继承其父元素的特性。开发者也可以将自己编写的类用作XAML的元素,正如XAML的中文名称为可扩展应用程序标记语言,任何一个具有公共的无参数的构造函数以及可设置属性的类均可在XAML中使用。
XAML并不是HTML。尽管XAML在元素的声明、程序样式的设置和指定事件处理程序上都和HTML非常类似,但是XAML基于XML,它是WPF的外在表现形式。而HTML主是一种标记语言,仅仅是用来为浏览器呈现页面内容。XAML除用来呈现信息和请求用户输入等基本的功能外,它还包含一些高级的特性,如能提供对动画和3D众多方面的支持。
实例


结束语
XAML是XML的一种方言(dialect),所以理解XML对我们深入学习XAML还是有很大的帮助,我们无需再关注XAML语法上的问题,可以把更多的精力放在WPF的元素上。如果对HTML+CSS技术熟悉的话对WPF的学习更会有很多帮助。
更多关于XAML细节,请关注后续基础文章对各个控件的介绍。
参考
【WPF系列】基础学习-XAML的更多相关文章
- [WPF系列]基础学习(一) WPF是什么?
引言 学习之前,我们首先大概了解下WPF诞生的背景以及它所能解决的问题或者新颖之处.WPF作为微软新一代的用户界面技术, WPF简介 WPF的全称是WindowsPresentationFound ...
- Node.js系列基础学习-----回调函数,异步
Node.js基础学习 Node.js回调函数 Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步.回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都 ...
- Node.js系列基础学习----安装,实现Hello World, REPL
Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...
- [WPF系列]-基础系列 Property Trigger, DataTrigger & EventTrigger
So far, we worked with styles by setting a static value for a specific property. However, using trig ...
- [WPF系列]-基础系列 TabControl应用
引言 Tabcontrol控件也是我们在项目中经常用到的一个控件,用它将相关的信息组织在一起分类显示. 简介 ========================================= ...
- [WPF系列]基础Combox
示例 参考 WPF combobox SelectedValue binding to string Confused with wpf ComboBox DisplayMemberPath, ...
- [WPF系列]基础 Listening to Dependency Property change notifications of a given Element
I want to share this great post from Anoop that shows a easy way to add a notification system to dep ...
- [WPF系列]从基础起步学习系列计划
引言 WPF技术已经算不什么新技术,一搜一大把关于WPF基础甚至高级的内容.之前工作中一直使用winform所以一直没有深入学习WPF,这次因项目中使用了WPF技术来实现比较酷的展示界面.我在这里只是 ...
- 深入浅出WPF-02.WPF系列目录
WPF系列目录 2. XAML认识 3. XAML语法 4. x名称空间详解 5. 控件与布局 6. 绑定Binding-01 6. 绑定Binding-02 6. 绑定Binding-03 7. 属 ...
随机推荐
- webpack+vue-cli项目打包技巧
1.设置config文件夹index.js中productionSourceMap的值为false,也就是设置webpack配置中devtool为false,打包后文件体积可以减少百分之八十!!!!! ...
- WindowsCE project missing Microsoft.CompactFramework.CSharp.targets in Visual Studio 2008
00x0 前言 之前在Windows 7系统中开发的WindowsCE项目,最近换成Windows 10系统,需要将项目进行修改,打开项目后提示如下错误: 无法读取项目文件"App.cspr ...
- jQuery页面滚动右侧浮动导航切换
体验效果:http://hovertree.com/texiao/jquery/49/ 效果图: 代码如下: <!DOCTYPE html> <html> <head&g ...
- aspx后台传递Json到前台的两种接收方法
第一种:前台接收 dataType: "json", success: function (data) { va ...
- DDD心得
使用DDD分层架构有哪些好处 帮你更集中的管理业务逻辑. 帮你降低各层间,以及各业务模块间的依赖关系. 帮你更方便的进行单元测试. 我的DDD分层架构使用经验 使用充血模型,将业务逻辑尽量放到领域实体 ...
- 关于Java语言和面向对象记录
本科时常用的c语言是面向过程的语言,而Java是面向对象的语言 Java语言的11个关键术语 简单性.可移植性.面向对象.分布式.高性能.解释型.健壮性.多线程.安全性.动态性.体系结构中立 面向对象 ...
- S2---深入.NET平台和C#编程的完美总结
1.NET简单解说 l 面向对象提升 OOP(Object Oriented Programming)面向对象编程 AOP:(Aspache Oriented Programming):面向切面编 ...
- ABP 初探 之 多语言
最近几天空闲时间比较多,就研究Abp的多语言,Abp是基于接口的依赖注入,有很多思想与方法都很好,需自己深入体会与应用,转化成自己的思想应用于实践. 本篇介绍基于 开源Demo ModuleZeroS ...
- 转载 【CSS进阶】伪元素的妙用--单标签之美
1.单个颜色实现按钮 hover .active 的明暗变化 请点击 转载利用伪元素单个颜色实现 hover 和 active 时的明暗变化效果 2.利用after伪类清除浮动 .clearfix:a ...
- jQuery - 全国省市县三级联动
最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...