深入浅出WPF(2)——解剖最简单的GUI程序
小序:
从这篇文章开始,我们进行XAML语言的上手学习。说实话,XAML这种语言一点也不难。如果把XML看成是“父类”,那么XAML就是XML的一个派生类了,所以XML的概念在XAML中是通用的。What?你不了解XML?没关系,反正我们是从头开始!
正文:
你还能想起学C/C++的时候写的第一个程序吗?呵呵,一定是“Hello World”吧!今天我们来解析一个“Hello WPF”。准备好了吗?Let's go!
准备知识
使用VS2008新建一个WPF Application,你立刻就会得到一个看上去是“空”的窗体。窗体这个东西,在Windows Form程序里叫“Form”,在WPF里叫“Window”——喔,Win32 API里也叫Window!是的,你说对了,WPF在某种程度上是向Win32 API的“返璞归真”!
为什么说它“看上去”是空的呢?实际上,这个Window的内部有一个叫<Grid>的元素(Element),只是这个元素是看不见的,它就像信纸上的“暗格”一样。
针对XAML文件,是可以进行“所见即所得”的可视化设计的。你在XAML代码上做的修改,只要是合乎语法的,那么在设计器里就会立刻反映出来(有时候需要刷新一下)。如果你发现设计器里显示不出来了,那一定是XAML语句出了问题,最好想办法修正它。不然的话,在设计器里都看不到效果、只能运行起来看,这还算什么可视化编程呢?要XAML还有什么意义呢?
在我们正式剖析代码之前,让我们牢记两件事:
1. 这个世界是一个“组合”的世界——汽车是由一个车身和四个轮子组合成的;飞机是由机翅和机身组合成的。这些组成部分,我们称之为元素(Element)。
2. 在XAML文件里,每写一个元素就相当于定义了一个元素所对应的.NET Framework类的实例。
有必要强调一点:如果一个实体是由一些(同类或者不同类的)子对象组合成的,我们就称这个实体为“父元素”、称这些子对象为“子元素”,因为父元素包含着子元素,所以常把父元素称为“包含元素”、把子元素称为“被包含元素”或父元素的“内容”——我们需要注意,被包含元素并不等同于包含元素的属性(property),被包含元素只是包含元素的一个部分。 初听这句话,肯定是一头雾水,