WPF样式和行为学习总结
来源:互联网 发布:psp4000淘宝 编辑:程序博客网 时间:2024/06/13 12:42
样式和行为
样式是组织和重用格式化选项的重要工具,不是使用重复的标记填充XAML。
行为是一款重用用户界面的更有挑战性的工具。基本思想是:使用行为封装一些通用的UI功能。
引入.Net名称空间System映射到XAML名称空间的前缀sys
xmlns:sys="clr-namespace:System;assembly=mscorlib"
每一个Style对象是一个Setter对象的集合。每一个Setter对象设置元素的单个属性。唯一的限制是设置器只能改变依赖项属性,不能修改其他属性。
Style类中有五个总要的属性
Setters:设置属性以及自动关联事件处理程序的Setter对象或者EventSetter对象
Triggers:继承制TriggerBase类并能自动改变样式设置的对象集合
Resources:希望用于样式的资源集合。例如,可能需要使用一个对象设置多个属性。
BaseOn:通过该属性可创建继承自其他样式设置的更具体样式
TargetType:该属性标示应用样式的元素类型。
在某些情况下,不能使用简单的特性字符串设置属性值。不能使用字符串设置ImageBrush对象,但是可以使用嵌套。
为了表示希望设置的属性,需要提供类和属性的名称。
这样设置的一些问题
<Style x:Key="txtbtnStyle">
<Setter Property="Button.FontFamily" Value="Times New Roman"/>
<Setter Property="TextBlock.FontFamily" Value="Arial"/>
</Style>
这样做并不会得到想要的效果,问题在于Button.FontFamily和extBlock.FontFamily属性是在各自的基类中分别声明,但是他们都是引用同一个依赖项属性,所以后设置的对象起作用。
可以使用TargetType属性解决这种问题
触发器
触发器通过Style.Triggs集合链接到样式,每个样式都可以有多个触发器。触发器重要的属性
Trigger:这是一种简单触发器,可以监测依赖项属性的变化,然后使用设置器改变样式。
MultiTrigger:与Trigger相似,但这中触发器联合的多种条件,只有当所有这些条件都满足时才发生。
DataTrigger:这种触发器使用数据绑定。与Trigger类似,只不过监视的任意绑定数据的变化.
MultiDataTrigger:联合多个数据触发器。
EventTrigger:这是最发杂的触发器,当事件发生时,这种触发器用于动画。
触发器的优点是不需要为反转他们而编写任何逻辑,只要停止应用触发器,元素就会恢复到正常外观。可创建一次应用于同一元素的多个触发器,如果这些触发器设置不同的属性,这种情况就不会出现混乱,然而,如果多个触发器修改同一属性,那么最后的触发器有效。
<Style.Triggers>
<Trigger Property="Control.IsFocused" Value="True">
<Setter Property="Control.Foreground" Value="DarkRed"/>
</Trigger>
<Trigger Property="Control.IsMouseOver" Value="True">
<Setter Property="Control.Foreground" Value="LightBlue"/>
<Setter Property="Control.FontWeight" Value="Bold"/>
</Trigger>
<Trigger Property="Button.IsPressed" Value="True">
<Setter Property="Control.Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
当按钮被点击时,前景色是红色,因为红色是最后设置的。
如果希望创建只有当多个条件都为真时才激活的触发器,可以使用MultiTrigger,这种触发器提供了一个Condition是集合,可通过该属性定义一系列属性和值得集合,
<Style x:Key="BigMultiStyle">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Button.IsPressed" Value="True"></Condition>
<Condition Property="Control.IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Control.Foreground" Value="Red"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
- WPF样式和行为学习总结
- WPF样式和行为
- WPF样式和行为
- WPF学习笔记--样式
- wpf学习笔记-样式
- WPF 样式和资源
- WPF主题样式和应用程序样式
- WPF的本质:数据和行为
- WPF布局学习总结
- wpf 学习总结
- WPF学习总结和记录(六)-文本和墨水
- html5 定制软键盘样式和行为
- 结构和样式,行为的分离
- WPF编程学习——样式(1)
- WPF编程学习——样式
- WPF编程学习——样式
- WPF学习 第十一章1 样式
- WPF学习总结和记录(一)内容控件
- 查找SAP增强方法总结
- Ubuntu 默认安装目录
- Mysql5.6启动报错, [ERROR] InnoDB: Could not find a valid tablespace file for 'pa
- WPARAM 和 LPARAM
- Android中一些反编译器工具的使用方法
- WPF样式和行为学习总结
- 性能优化之布局优化
- final相关
- python中xrange和range的异同
- 【分享】武汉江夏豹澥镇某地区27个土壤湿度传感器3个月数据
- MySQL MyISAM/InnoDB高并发优化经验
- Callable接口与Runnable接口区别
- 欢迎您在新浪博客安家
- android 4.3 framework之init深入