参考文献:

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. 如何利用OCS存取PHP session全局变量

    如何利用OCS存取PHP session全局变量 阿里云技术团队:余汶龙   一.场景介绍 用户在利用PHP搭建网站时,会把一些信息存放在$_SESSION全局变量里,可以很方便的存取.在PHP的in ...

  2. Divisibility by Eight (数学)

    Divisibility by Eight time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  3. hdu 4271 动态规划

    思路:考的是字符串的编辑距离.在蓝桥杯2012年决赛上出现过. #include<iostream> #include<cstdio> #include<cstring& ...

  4. Create a Bootable MicroSD Card

    http://gumstix.org/create-a-bootable-microsd-card.html Create a Bootable MicroSD Card Beginners Note ...

  5. c# 结课小结

    C#总结知识点 模块一:知识点梳理 输入输出表达式---数据类型---变量与常量 ----运算符---语句-----数组与集合---函数--结构体: 模块二:输入与输出 输入:  console.re ...

  6. parseInt在IE8转换返回不相等(parseInt("08")返回0等以0开头大于7的数字串)

    描述 在IE8内核下parseInt("08")返回0,等以0开头大于7的数字串返回的值不相等 解决方法 parseInt当不指定radix时,当以0x开头时,s按照十六进制计算的 ...

  7. for in

    1   for in 循环如果遍历的是数组 那么  i  就是数组的索引值 var x; var person=[456,"qwe",890]; for (x in person) ...

  8. Java之简单图形面积计算

    设计一个类层次,定义一个抽象类--形状(类名:shape).其中包括求形状的面积抽象方法(方法名:calArea()).继承该抽象类定义三角形(Triangle).矩形(Rectangle).圆(Ci ...

  9. JavaScript之简易计算器

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  10. 如何防止Android应用代码被窃

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...