wpf学习笔记 初识xaml
酒要一口一口地喝,路要一步一步走,步子迈得太大,会扯着蛋。学习wpf,从最简单的代码开始。新建一个最简单的wpf程序。
wpf摒弃了Windows Forms程序显示与逻辑混杂的缺点,选择了web开发相类似的代码后置,也就是微软说的 Code Behide,显示放在*.xaml文件里,逻辑代码写在*.xaml.cs(两个文件的前面部分不一定要相同,这里写成一样的是为了管理方便,具体为什么我下面再说)。
xaml就像是美女的脸,化妆化得怎么样,都在这xaml代码里边,打开MailWindow.xaml文件能看到如下代码:
xaml派生自xml语言,所以你能看到xaml很好地遵循xml的规范(xml是最终的互联网文件标准),即良好的树形结构和规范的属性定义方式。
第二行和第三行中都带有网址,这是wpf的引用外来程序集的方式,相当于c#中的using,这两个网址在浏览器里打开是访问不了任何页面的,它们只是xaml解析器的一种硬编码,Grid标签即来自第二行的引用。这些都是固定的语句,而且vs2010和vs2008都会自动提示。
在代码的第四行,我们看到了熟悉的 attribute=“xx” 形式的代码,熟悉webform和winform的同学很熟悉有木有!对,他就是抄来的。不过在xaml,因为之前说过它有很好的树形结构,所以把属性作为一个子树来写也是可以的,比如 :
<Grid Height="350"></Grid> 和
<Grid>
<Grid.Height>350</Grid.Height>
</Grid>
这样是等价的。
这些代码里边最有内涵的是第一行和第三行出现的x。
x很神秘有木有!!!x很难懂有木有!!!
其实x就是给这个映射取的名字,相当于一个变量,变量是指向那个引用集(这个说法好像不专业)。就记住如果要使用x对应的那个引用集里的东西的话,就必须在前面加x:,就是个命名空间的意思。
细心的肯定会发现,为什么第二行的引用没有给他起名字,而且下面的Grid标签也没有命名空间前缀。
本人初步臆断,微软的工程师大多都属于很懒的行列,为了省去每个文件里面几个字母,特地地安排了一个名额,没有写命名空间前缀的控件都会自动归到没有起名字的那个引用集里去。但是,一个类里面只能有一个无名无姓的,多了就乱套了。
最后,为了表示对wpf的敬意,特表书法一副: