资源
WPF资源系统保存公有对象和样式,重用这些对象和样式。
资源基础:元素都有Resources属性,存储资源字典集合。可以访问它自己和父元素。
资源层次:从自己的资源集合开始查找
静态资源和动态资源区别:StaticResource和DynamicResource
静态资源,一次性设置完毕;
动态资源,发生改变重新应用。
静态资源引用是从控件所在的容器开始依次向上查找的,而动态资源的引用是从控件开始向上查找的(即控件的资源覆盖其父容器的同名资源)
非共享资源:X:Share='false'
通过代码访问资源:this.Resources["资源键值"]和this.FindResource("资源键值");
查找:查找窗口资源,应用程序资源;当前激活状态下的Theme资源字典;系统资源。
资源字典:作用是在多个项目之间共享资源的话。是XAML文档,可以通过右键项目->添加资源字典。
- 1 在资源字典中添加自定义style等
- 2 在Application.Resources中添加资源字典文件引用
- 3 通过资源的Key属性来进行引用
应用程序下共享资源:1 创建ResourceDictionary对象 2 使用ComponentResourceKey,必须动态资源。定义和引用从外部程序集加载的资源键。
WPF样式
WPF样式使用:Window.Resources设置窗口资源。
创建资源集合:创建Style对象。包含了Setter集合
Style的属性:
- Setters:属性值对象的集合
- Triggers:自动改变样式
- Resources:样式的资源集合
- BasedOn:继承自其他样式
- TargetType:元素的类型
Setter:Property指定作用到的属性,Value则指定作用到的属性值。TargetType 指定被作用的对象类型
创建样式对象:更精细目标的样式,使用容器的Resoures,应用程序中重用样式,可以使用应用程序的Resources。
设置属性:在某些情况下不能使用简单的特性字符(Property)设置属性值。可使用嵌套的元素代替
关联事件处理程序:为事件关联特定事件处理程序的EventSetter对象的集合。
关联事件处理程序使用:Event指定事件,Handler指定处理程序
多层样式:设置BasedOn特性继承样式
11.1.5 通过类型自动应用样式:设置TargetType属性忽略键名,实际是隐式的使用类型标记扩展设置键名,比如x:Key="{x:Type Button}"
11.2 触发器:属性发生变化时自动调整样式
- Trigger:监测依赖属性的变化
- MultiTrigger:联合多个条件
- DataTrigger:监视绑定数据的变化
- MultiDataTrigger:联合多个数据触发器
- EventTrigger:事件发生时应用动画
使用:1 Style.Triggers 2 设置事件 Trigger Property 3 设置样式 Setter Property
使用多个:1 Style.Triggers 2 MultiDataTrigger 3 设置事件 MultiDataTrigger.Conditions Property
4 设置样式MultiDataTrigger.Setters Property
事件触发器:普通触发器等待属性变化,事件触发器等待特定事件被引发。要求提供列修改控件的动作
使用: 1 设置事件 EventTrigger RoutedEvent 2 触发响应处理 EventTrigger.Actions,BeginStoryboard,Storyboard,类