参考文献:

http://msdn.microsoft.com/zh-cn/library/ms752059(v=vs.110).aspx

《Pro WPF 4.5 in C# 》

一、XAML概况

1.XAML是什么

XAML (Extensible Application Markup Language ,读作zammel) 是用于实例化.Net的一种声明性标记语言。

2.XAML有什么用

当使用Visual Studio编写WPF程序时,你设计的Window不是转化成代码,而是转换成一系列XAML标签。当你运行这个WPF程序时,这些标签代码会生成用户界面的对象。

3.为什么要学习XAML

虽然可以用Visual Studio 设计Window,但是学习XAML,可以帮助你更好地学习WPF的概念。更重要的是,要更好地完成许多WPF程序,需要我们手写XAML文件。有的开发者喜欢通过Visual Studio设计UI,再通过编辑XAML文件来调整细节。但是在某些情况下,完全手写XAML文件,可能是更好的选择。

二、XAML基础

1.基本特征

i.对象元素(element)

对象元素语法始终以左尖括号 (<) 开头。要完成对象元素标记,以右尖括号 (>) 结尾,或者用一个正斜杠后接一个右尖括号 (/>) 来完成标记。

每个XAML对象元素都与.NET的类名匹配。如:

<StackPanel>
<Button Content="Click Me"/>
</StackPanel>

例子当中,StackPanel和Button是两个对象元素。

ii.对象特性(attribute)

可在对象元素标签内,用赋值运算符 (=)设置特性。特性的值始终以包含在引号中的字符串的形式进行指定。

iii.对于对象元素的某些属性,特性语法是不可能实现的,因为无法在特性语法的引号和字符串限制内充分地表达提供属性值所必需的对象或信息。对于这些情况,可以使用另一个语法,即属性(property)元素语法<类型名称.属性名称>。通常,该标记的内容是类型的一个对象元素,属性会将该元素作为其值。 指定内容之后,必须用一个结束标记结束属性元素。 结束标记的语法为 </类型名称.属性名称>。如:

<Button Background="Blue" Foreground="Red" Content="This is a button"/>

例子当中,为Button对象元素设置了Background、Foreground、Content三个属性。

2.根元素,xmlns,xmlns:x

一个简单的XAML文件:

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Button Content="Button" HorizontalAlignment="Left" Margin="112,79,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> </Grid>
</Window>

i.一个XAML文件只能有一个根元素:Window,Page,Application等等。为页使用Window或Page,为外部字典使用ResourceDictionary,或为应用程序定义使用 Application。比如,当一个Window标签结束,该XAML就结束了。

ii.根元素还包含特性xmlns和xmlns:x。xmlns指明默认的XAML命名空间。对于大多数 WPF 应用程序方案,默认的 XAML 命名空间均映射到为 WPF 命名空间 http://schemas.microsoft.com/winfx/2006/xaml/presentation

iii.xmlns:x 特性指示另外一个 XAML 命名空间,该命名空间映射 XAML 语言命名空间 http://schemas.microsoft.com/winfx/2006/xaml。该命名空间是支持 XAML 语言构造的专用 XAML 命名空间。

有关x:前缀编程构造,参阅:《XAML 命名空间 (x:) 语言功能》(http://msdn.microsoft.com/zh-cn/library/ms753327(v=vs.110).aspx)

WPF学习笔记1——XAML之1的更多相关文章

  1. WPF学习笔记——认识XAML

    Extensible Application Markup Language,XAML是一种声明性标记语言. 一.XAML语法概述 1,与XML类似,用尖括号标记元素 <StackPanel&g ...

  2. WPF学习笔记2——XAML之2

    三.事件处理程序与代码隐藏 例如,为一个Page添加一个Button控件,并为该Button添加事件名称Button_Click: <Page xmlns="http://schema ...

  3. WPF学习笔记 - 在XAML里绑定

    Binding除了默认构造函数外,还有一个可以传入Path的构造函数,下面两种方式实现的功能是一样的. <TextBlock x:Name="currentFolder" D ...

  4. WPF学习笔记-用Expression Design制作矢量图然后导出为XAML

    WPF学习笔记-用Expression Design制作矢量图然后导出为XAML 第一次用Windows live writer写东西,感觉不错,哈哈~~ 1.在白纸上完全凭感觉,想象来画图难度很大, ...

  5. WPF 学习笔记-在WPF下创建托盘图标

    原文:WPF 学习笔记-在WPF下创建托盘图标 首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Co ...

  6. WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决

    原文:WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决 如下图,在凭证编辑窗体中,有的单元格不需要数字,但如果录入数字后再删除,会触发数字验证,单元格显示红色框线,导致不能执行 ...

  7. WPF 学习笔记-设置属性使窗口不可改变大小

    原文:WPF 学习笔记-设置属性使窗口不可改变大小 调整Windows下的ResizeMode属性: ResizeMode = NoResize Resize属性是控制Windows是否可以改变大小, ...

  8. 【WPF学习笔记】之如何把数据库里的值读取出来然后显示在页面上:动画系列之(六)(评论处有学习资料及源码)

    (应博友们的需要,在文章评论处有源码链接地址,以及WPF学习资料.工具等,希望对大家有所帮助) ...... 承接系列五 上一节讲了,已经把数据保存到数据库并且删除数据,本讲是把已经存在的数据从数据库 ...

  9. [WPF学习笔记]动态加载XAML

    好久没写Blogs了,现在在看[WPF编程宝典],决定开始重新写博客,和大家一起分享技术. 在编程时我们常希望界面是动态的,可以随时变换而不需要重新编译自己的代码. 以下是动态加载XAML的一个事例代 ...

随机推荐

  1. jquery.blockUI.2.31.js 弹出层项目介绍

    {insert_scripts files='user.js'} <style type="text/css"> #float_login{border:1px sol ...

  2. uva 101 POJ 1208 The Blocks Problem 木块问题 vector模拟

    挺水的模拟题,刚开始题目看错了,poj竟然过了...无奈.uva果断wa了 搞清题目意思后改了一下,过了uva. 题目要求模拟木块移动: 有n(0<n<25)快block,有5种操作: m ...

  3. <c:forEach> 详解

    <c:forEach>标签用于通用数据循环,它有以下属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 开始条件 否 0 end 结束条件 否 集合中的 ...

  4. web前端开发(2)

    搜索引擎只能通过标签判断网页的语义. table布局代码量大.对搜素引擎不友好,应该使用div+css布局,使用css控制网页中元素的大小.颜色.位置,让html在样式.结构混杂的局面中挣脱出来,专注 ...

  5. css初接触

    一.简介:CSS 即 级联样式表 . 它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. css是能够真正做到网页表现与内容分离的一种 ...

  6. 【BUG】---ng-show/ng-hide修改成功但没有效果

    问题:点击搜索,隐藏tab,出现搜索结果列表,调试也成功修改了分别元素的ng-hide就是没有效果 我的错误: <div ng-hide="{{isShow}}" class ...

  7. CSS3--实现特殊阴影 (实例)

    学习来源:慕课网http://www.imooc.com/view/240 先看效果图↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ HTML结构 <body> <div class=& ...

  8. django 学习-16 Django会话Cookie

    1.django.admin.py  startproject   cs3 cd cs3 django.admin.py   startapp   blog 2.    vim urls.py url ...

  9. 解决 arcGis android TextSymbol乱码的问题

    不论是Arcgis for Android的哪个版本,都没无法解决中文乱码的问题,这个与Android中自带的字体库有关,可以参考这篇文章. 所以,要在Arcgis for Android中显示中文, ...

  10. c#抽象类相关

    abstract class mylass { public int age{get;set} public abstract void SaiHi(); } 1,抽象类中可以有实例成员,也可以有抽象 ...