写在前面
从这篇文章开始,我们将正式走入WPF的学习,但是要学好WPF你不仅要了解WPF相关的知识,跟要学好一些辅助的知识点,比如今天讲的XAML,XAML是一种标记语言,类似于Html,因为我之前帮别人写过网页和网页游戏,所以对这一块的理解基本上没什么问题,但也仅限于简单的使用,归根结底XAML上的每一个元素(标记)都是一个类。
InitializeComponent()
XAML是配合WPF使用的,两者不可混为一谈,既然是两个东西那么一起使用的时候就一定要有一个交点,
InitializeComponent()就是他们的交点,因为不管是你界面写的多好看多炫酷,最后还是要编译成机器语言的,InitializeComponent()这个方法就让后台的逻辑代码和前端的标记语言在编译的时候有了一个统一性。
硬件加速
WPF程序通过DirectX执行所有WPF绘图操作,以便充分利用现代显卡的最新功能。
这句话我也不太懂,反正就是适应了现代显卡,加载控件啥的比较快。
关于属性
每个类都可以有它的属性,但当我们要设置一些复杂的属性时,一般的属性设置方法往往不能满足我们的要求,上代码:
//普通的属性设置
<Grid Background="Blue" />
复杂属性
普通的属性设置就是这样,简单,设置方法简单,设置的值也很简单。但是如果我想要有一个渐变色的效果怎么办呢。。。而且渐变是经常用到的背景属性值,这里有两个办法,第一个办法就是使用复杂属性设置,上代码:
//复杂的属性设置
<Grid>
<Grid.Background>
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.00" Color="Red" />
<GradientStop Offset="0.50" Color="Blue" />
<GradientStop Offset="1.00" Color="Green" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Grid.Background>
</Grid>
复杂属性其实就是把一般属性变成添加名称为Parent.PropertyName的子元素。
附加属性
附加属性也是这章的一个重点,附加属性是可用于多个控件,但在另一个类中被定义的属性,也就是原本不属于自己的属性,举个简单的例子
//附加属性
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox grid.row="0" />
</Grid>
嵌套元素
XAML中元素处理嵌套元素的机制有三种。一,实现ILIst接口;二,实现IDictionary接口;三,父元素使用ContentProperty进行修饰。但是呢,我去看了一下我写的项目,好像情况不是这样的,第三种情况是有的,比如Button控件就有。但是其他两种情况好像就没了,变成了实现IAddChild接口。我也不知道是我理解的有问题还是,.NET版本更新了,这个暂时作为一个疑问,等我知道了,在做相应的回答。
写在结尾
这篇文章主要讲的是XAML的一些基础知识点,也有很多没有讲到的,比如事件,因为我们的VS实在太强大了,事件的创建都是半自动的很方便,所以我就没讲。还有一些特殊字符,并不是必要的内容,所以我也没讲,以后如果实战项目中遇到了,可能会讲解一下。其实XAML的主要作用还是分离前后端,这里的分离前后端不仅仅是代码上的分离,更是工作上的分离,一个好的后端程序员能写出逻辑清晰,条例明确的逻辑代码,但是你让他设计个界面…懂吧,他会给你设计一个XP的界面出来。