WPF系列教程(二十九):触发器Triggers、MultiTrggers、EventTrigger——属性触发器、多触发器、事件触发器
使用触发器可以自动完成简单的样式改变。
项目源码
触发器
在Style定义时使用Style.Triggers属性来实现:
<!--设置触发器-->
<Style.Triggers><Trigger Property="Control.IsFocused" Value="True"><!--获取焦点的时候,点击按钮--><Setter Property="Control.Foreground" Value="DarkRed"/></Trigger>
</Style.Triggers>
给按钮使用该Style及其触发器:
<Button Name="btn1" Content="Button" Margin="5" VerticalAlignment="Top" Style="{StaticResource BigFontButton}"/>
当点击按钮,按钮获得焦点时,触发样式“前景色变为深红色”:
当鼠标点击下方TextBox时,按钮失去焦点,又变回触发之前的样式。
再设置一个触发器:
<Trigger Property="Button.IsPressed" Value="True"><Setter Property="Control.Foreground" Value="Blue"/>
</Trigger>
则在按下的时候为蓝色,弹起为红色。
多触发器
设置满足多个触发条件时才触发控件的样式改变。利用MultiTrigger进行定义,用MultiTrigger.Conditions定义多个条件的集合,用MultiTrigger.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.Foreground" Value="SkyBlue"/></MultiTrigger.Setters></MultiTrigger>
</Style.Triggers>
结果,只有当按钮获取焦点且鼠标悬停与按钮上方时,才能应用触发器样式改变:
事件触发器
定义在鼠标进入和离开时用故事板动画改变字体的大小,使得大小的变化为逐渐变化,不是突变。使用EventTrigger属性进行改变:
<Style.Triggers><EventTrigger RoutedEvent="Mouse.MouseEnter"><!--事件触发器--><BeginStoryboard><Storyboard><!--故事板,可以让改变从小逐渐变大,而不是突然变大--><DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="FontSize" To="48"/><!--Duration表示花多少时间改变--></Storyboard></BeginStoryboard></EventTrigger>
<EventTrigger RoutedEvent="Mouse.MouseLeave"><!--事件触发器--><BeginStoryboard><Storyboard><!--故事板,可以让改变从小逐渐变大,而不是突然变大--><DoubleAnimation Duration="0:0:1" Storyboard.TargetProperty="FontSize" To="10"/><!--Duration表示花多少时间改变--></Storyboard></BeginStoryboard></EventTrigger>
</Style.Triggers>
WPF系列教程(二十九):触发器Triggers、MultiTrggers、EventTrigger——属性触发器、多触发器、事件触发器相关推荐
- Debezium报错处理系列之二十九:Make sure that an instance of SQL Server is running on the host and accepting TCP
Debezium报错处理系列之二十九:Make sure that an instance of SQL Server is running on the host and accepting TCP ...
- Kubernetes生产实践系列之二十九:Kubernetes基础技术之容器关键技术实践
一.前言 在文章<Kubernetes生产实践系列之二十八:Kubernetes基础技术之容器关键技术介绍>中,对于Docker容器技术依赖的namespace.cgroup和UnionF ...
- druid 手动指定数据源_Spring Boot2 系列教程(二十)整合JdbcTemplate 多数据源
多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...
- 二十五、Node中的Buffer缓冲器和EventEmitter事件触发器
@Author:Runsen @Date:2020/6/5 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- WPF系列教程(十二):控件类——前景背景、字体Background、Foreground、FontFamily、FontSize
控件都包含背景画刷和前景画刷属性. 部分控件包含字体属性. 鼠标光标的设置. 示例项目源码 为控件设置背景与前景 下面这个窗体 <Window x:Class="Control.Mai ...
- MATLAB实战系列(二十九)-头脑风暴优化(BSO)算法求解旅行商问题(TSP)-交叉算子
前言 代码明细可参见 MATLAB实战系列(八)-头脑风暴优化(BSO)算法求解旅行商问题(TSP)(附MATLAB代码) 交叉算子的实现机制 我们还是以求解TSP问题为例,8个城市的坐标如下所示. ...
- 详解DMZ的部署与配置:ISA2006系列之二十九
DMZ的部署及配置 DMZ是Demilitarized Zone的缩写,俗称非军事化隔离区.DMZ是一个位于内网和外网之间的特殊区域,一般用于放置公司对外开放的服务器,例如Web服务器,Ftp服务器, ...
- 英语总结系列(二十九):好好学英语
[前言] 好好学英语不是一句空话,英语也是我们的红利. [本月回顾] 本月最后的十天又恢复了每天两个小时的英语学习模式: 本月学习的内容<新美> 进步一点:随着熟悉度越来越高,逐渐体会到了 ...
- 应用安全系列之二十九:密码管理
一个系统的登录有多种方式,严格的有使用人的指纹.虹膜等生物特征作为登录凭据,在一些电影大片中,也经常看到一些牛逼的人如何盗取指纹来获取系统的登录.生活中,常见的指纹锁采用的是人的指纹作为登录凭证.不过 ...
- Spring Boot2 系列教程(二十二)整合 MyBatis 多数据源
关于多数据源的配置,前面和大伙介绍过 JdbcTemplate 多数据源配置,那个比较简单,本文来和大伙说说 MyBatis 多数据源的配置. 其实关于多数据源,我的态度还是和之前一样,复杂的就直接上 ...
最新文章
- mysql提示符详解_MySQL字符集使用详解
- oracle服务器双机,双机热备Oracle数据库服务器操作实战
- JS事件冒泡与事件捕获
- 如何搭建socks5和ss节点_以太坊区块链搭建与使用(三)-联盟链
- linux fcitx 下载网址(亲测可用)
- 配置Windows Server2008故障转移集群
- 功能机也不放过,谷歌或为 Chrome 提供非触控模式
- Mac电脑「空格键」的妙用,原来有这么多功能
- LeetCode之第一个错误版本
- OpenGL超级宝典 使用缓冲为顶点着色器提供数据
- 简单区分单射、满射与双射
- Jenkins 自动化部署流水线优化经验
- 笔记本键盘如何摇身一变机械键盘?
- Steam游戏服务器配置选择 IP
- 基于单片机的篮球计分器系统设计(#0455)
- pfn_to_page
- clickhouse Parametric Aggregate Functions的使用
- 智能门锁:电源管理概述2
- 【每日新闻】Gartner:2017年CRM跃升为规模最大、增速最快的软件市场 | 中国科学家发现神奇半导体材料...
- 数字图像处理之matlab大作业:自制图像处理小工具
热门文章
- php模拟腾讯微校第三方认证,小程序,对个人公众号进行了一次权限的解放
- 插件开发之VSCode
- Oracle SPARC T5-4 服务器:硬件规格
- 解决:使用ssh-copy-id命令时出现ERROR: ssh: Could not resolve hostname hadoop01:Name or service not known
- 一步步的教你如何创建第一个APP?-swift
- J2EE_01快速入门 集合框架
- 招聘、入职、参与和培训的HR人力资源团队 OKR 案例
- 力扣(279完全平方数)
- 自学Android开发(一)
- 汽车的空气悬架的功能以及发展趋势