Wpf开发的关键概念是设计和功能几乎完全分开
一些高级功能:
浮点数坐标和矢量图提供的布局可以缩放,旋转和变换,且没有质量损失
2D和3D高级渲染功能
字体的高级处理和渲染
UI对象的纯色,渐变色和纹理填充,且可以设置透明度
动画故事版功能,可以用于所有情形,包括用户触发的事件
可重用的资源,以动态设置控件的样式
Xaml语法:对象元素语法,特性语法,属性元素语法,内容语法,标记扩展
依赖属性特性:
可以使用样式改变依赖属性的值
可以使用资源或通过数据绑定设置依赖属性的值
可以改变动画中依赖属性的值
可以在xaml中按层次设置依赖属性
使用定义好的编码模式可以配置属性值改动的通知
可以配置一系列相关属性,在改变其中一个属性值时,他们就会全部更新
可以把元数据用于依赖属性,指定其他行为特征
关联属性是一种属性,定义这个属性的类的实例的每个子对象都可以访问它
路由事件由控件层次结构中的所有对象按指定顺序引发,可以完全控制响应他们的方式
可以在一个事件中促发多个事件处理方法
事件在控件的层次结构中向下移动时,称为通道,向上移动时称为冒泡
Wpf在遇到单击测试时,会区分控件的透明区域和空区域,只有透明区域会响应单击测试
使用关联事件可以在没有提供该事件的控件上处理这些事件
布局:所有的内容布局控件都派生于抽象类panel,这个类仅定义了一个容器,该容器可以包含派生于uielement的对象集合,所有的wpf控件都派生于uielement。一些派生于panel的布局控件:
Canvas,这个控件可以按任意方式定位子控件,定位没有任何限制,也没有任何帮助
DockPanel,这个控件可以把子控件停靠在它的4条边上,最后一个子控件会占用剩余的空间
Grid,可以布局行和列,使控件在栅格布局中对齐
WrapPanel,这个控件以水平或垂直布局来布置其子控件,但不是仅在单行或单列上布置控件,而是根据可用空间,允许把子控件放在多行或多列上
StackPanel可看作是dockPanel的删节版本,最后一个控件不会填满剩余空间
注意控件如何以堆栈顺序显示
样式是成批应用于控件的属性组
模版是用于建立控件外观的控件,样式可以包含模版
Wpf控件有Style属性,具有高级样式化功能,但其核心是一组setter对象
控件的模版存储在template属性中
每个控件都有triggers属性,用于直接在该控件上定义触发器,也可以在该层次结构中进一步定义触发器
Trigger对象配置如下:
要定义trigger对象监控的属性,使用trigger.property属性
要定义trigger对象的激活时间,设置trigger.value属性
要定义trigger对象执行的动作,把trigger.setters属性设置为setters对象集合
资源定义为resourceDictionary对象中的项,这是指定了键的对象集合,引用的时候用到键名
分为静态引用和动态引用
{staticresource resourcename}
{dynamicresource resourcename}