WPF样式和触发器
理解样式
样式可以定义通用的格式化特征集合。
Style 类的属性
Setters、Triggers、Resources、BasedOn、TargetType
<Style x:Key="BitFontButtonStyle" TargetType="Button">
<setter Property="FontFamily" Value="Times New Roman"/>
</Style>
如果以上代码不使用x:Key ,那个TargetType属性还可以作为自动应用样式的快捷方式。
<!--删除自动应用的样式-->
<Buttn style="{x:Null}"/>
关联事件处理程序
<Style x:key="MouseOverHighLightStyle">
<EventSetter Event="TextBlock.MouseEnter" Handler="element_MouseEnter"/>
</Style>
private void element_MouseEnter(object sender,MouseEventArgs)
{
//业务代吗 事件处理程序
}
多层样式
*BaseOn *属性来设置样式的继承
<Style x:Key="NewButtonStyle" BaseOn="ButtonBaseStyle"/>
BaseOn可创建完整的样式继承链,最后设置的同一属性会覆盖基样式,样式继承的依赖会使程序变得脆弱,不建议使用样式继承。
触发器
可自动完成简单的样式改变,需要使用样板事件处理逻辑。通过 Style.Triggers集合链接到样式中,继承System.Windows.TriggerBase。
TriggerBase的继承类
Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger
通过FrameworkElement.Triggers集合可以直接为元素应用触发器。
简单触发器
<Style x:key="TextBoxStyle" >
<Style.Setters>
<Setter Property="Control.Background" Value="Red"/>
</Style.Setters>
<Style.Triggers>
<Trigger Property="Control.IsFocus" Value="True" >
<Setter Property="Control.Backgroud" Value="Yellow"/>
</Trigger>
<Trigger Property="Control.IsPressed" Value="True">
<Setter Property="Control.Background" Value="Blue"/>
</Trigger>
</Style.Triggers>
</Style>
以上触犯器都触发了IsFocused和IsPressed属性,那么设置的背景颜色为Blue,这不在于那个属性先触发,而是取决于触发器在标记中的排列顺序。
<Style x:key="TextBoxStyle" >
<Style.Setters>
...
</Style.Setters>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Control.IsFocused" Value="True"/>
<Condition Property="Control.IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Control.Background" Value="Pink"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
多条件的情况项不用关系声明的顺序,在改变背景颜色之前需要条件都为真。
事件触发器
<Style x:Key="BigFontButton">
<Style.Setters>
...
</Style.Setters>
<Style.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryBoard>
<DoubleAnimation Duration="0:0:0.2"
Storyboard.TargetProperty="FontSize"
To="22"/>
</BeginStoryBoard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
DoubleAnimation为Double类型动画类,位于System.Windows.Media.Aniamtion,Storyboard为故事版,为动画提供时间线,内部可以定义一个或多个动画。动画在一定时间类修改依赖项属性。
WPF样式和触发器的更多相关文章
- WPF样式与触发器(3)
WPF中的各类控件元素, 都可以自由的设置其样式. 诸如: 字体(FontFamily) 字体大小(FontSize) 背景颜色(Background) 字体颜色(Foreground) 边距(Mar ...
- [No000012F]WPF(7/7) - 样式,触发器和动画
WPF Tutorial : Beginning [^] WPF Tutorial : Layout-Panels-Containers & Layout Transformation [^] ...
- wpf中的触发器详解
原文 http://zwkufo.blog.163.com/blog/static/25882512009724113250883/ 7.1.2 简单逻辑的表示--触发器(1) 在本章的多处介绍中都会 ...
- WPF样式(Style)入门
原文:WPF样式(Style)入门 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_34802416/article/details/78231 ...
- wpf中的触发器详解 (转自 乂乂的日志 - 网易博客)
2010-03-24 16:19:07| 分类: WPF相关 | 标签: |字号大中小 订阅 wpf中的触发器详解 WPF/C# 2009-08-24 11:32:50 7.1.2 简单 ...
- Bootstrap WPF Style,Bootstrap风格的WPF样式
简介 GitHub地址:https://github.com/ptddqr/bootstrap-wpf-style 此样式基于bootstrap-3.3.0,样式文件里的源码行数都是指的这个版本.CS ...
- 写自己的WPF样式 - 窗体
初试WPF样式,感觉还不错.上篇写完了按钮的样式下面写窗体,废话不多说直接上代码: (1)定义一个窗体样式"MyWpfWindow" <Style x:Key="M ...
- C#工具:Bootstrap WPF Style,Bootstrap风格的WPF样式
简介 GitHub地址:https://github.com/ptddqr/bootstrap-wpf-style 此样式基于bootstrap-3.3.0,样式文件里的源码行数都是指的这个版本.CS ...
- WPF样式——经典博客
WPF样式博客:http://www.cnblogs.com/luluping/archive/2011/05/06/2039498.html
随机推荐
- kafka报文一直打印的问题
一.问题描述 今天开发了一个kafka消费者数据接收的功能,基本过程为分别启动本地的kafka服务和代码程序,在服务端手动发送消息,代码来进行接收消费.经测试,代码功能正常,但是再接收到一条kafka ...
- jQuery--基本事件总结
基本事件介绍 blur() 失去焦点 change() 改变(select) click() 单机 dbclick() 双击 error() 页面异常 focus() 获得焦点 focusin() j ...
- Axure在Chrome浏览解决方案
AXURE RP EXTENSION FOR CHROME Google Chrome浏览器需要扩展程序才能查看本地存储的项目.或者,将您的RP文件上传到Axure Cloud或使用其他浏览器.您也可 ...
- Redis 的同步机制了解么?
Redis 可以使用主从同步,从从同步.第一次同步时,主节点做一次 bgsave, 并同时将后续修改操作记录到内存 buffer,待完成后将 rdb 文件全量同步到复制 节点,复制节点接受完成后将 r ...
- CAS和CAP代表的作用
CAS(自旋锁):https://www.jianshu.com/p/ab2c8fce878b CAP原则:https://baike.baidu.com/item/CAP原则/5712863?fr= ...
- 学习openstack(七)
相关资料: https://www.cnblogs.com/shhnwangjian/category/942049.html https://www.cnblogs.com/goodcook/cat ...
- ubuntu+ROS安装turtulebot3
0 简介 Turtlebot是一种室内移动机器人,搭载激光传感器,使机器有精确的距离感知能力.通过搭建仿真环境,可以在没有硬件支持的情况下进行仿真和编程,并熟悉ros系统.环境使Ubuntu16.04 ...
- vs code下代码提示图标的含义(c++)
其实不同的语言这些东西的含义还有不同 但差别也不是很大,比如Python中的那个大括号图标就成了模块(module)了
- 《CSS 揭秘》作者Lea Verou:我喜欢分享开源的行业文化
本文仅用于学习和交流,不用于商业目的.非商业转载请注明作译者.出处,并保留本文的原始链接:http://www.ituring.com.cn/art... 访谈嘉宾: Lea VerouW3C CSS ...
- 关于js中this指向的总结
js中this指向问题一直是个坑,之前一直是懵懵懂懂的,大概知道一点,但一直不知道各种情况下指向有什么区别,今天亲自动手测试了下this的指向. 1.在对象中的this对象中的this指向我们创建的对 ...