触发器

  • 1. 概述
  • 2. 详解
    • 2.1. Trigger 用法
    • 2.2. MultiTrigger 用法
    • 2.3. DataTrigger 用法
    • 2.4. EventTrigger 用法
  • 总结


1. 概述

在这里插入图片描述
官方文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.trigger?view=netframework-4.8

2. 详解

在Style中可以指定触发器类型,触发器分为以下几种

类型说明
Trigger触发器,在满足一个条件时应用属性值或执行操作的触发器。
MultiTrigger多触发器,在满足多个条件时应用属性值或执行操作的触发器 。
DataTrigger数据触发器,它会在绑定数据满足指定条件时应用属性值或执行操作。
EventTrigger事件触发器,在某个事件发生时应用属性值或执行操作。

2.1. Trigger 用法

Trigger 类表示触发器在满足一个条件时应用属性值或执行操作,其部分属性和代码示例如图如下

属性说明
Property获取或设置一个属性,该属性返回要与触发器的 Value 属性进行比较的值。该比较是一项引用相等性检查。
Value获取或设置要与元素的属性值进行比较的值。该比较是一项引用相等性检查。
Setters获取 Setter 对象的集合,这些对象描述当满足指定条件时要应用的属性值。

在这里插入图片描述

<Window.Resources><Style TargetType="Button" ><!--单条件触发,鼠标移入--><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Background" Value="White"/></Trigger></Style.Triggers></Style>
</Window.Resources><Grid><Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="251,110,0,0" VerticalAlignment="Top" Height="171" Width="320"/>
</Grid>

2.2. MultiTrigger 用法

MultiTrigger 类表示在满足多个条件时应用属性值或执行操作,,其部分属性和代码示例如图如下

属性说明
Conditions当鼠标左键或空格键在按钮上按下时为true,否则false。
获取或设置触发器的多个条件。
Setters获取 Setter 对象的集合,这些对象描述当满足指定条件时要应用的属性值。

在这里插入图片描述

<Window.Resources><Style TargetType="Button" ><!--多条件触发,鼠标移入和点击--><MultiTrigger><MultiTrigger.Conditions><Condition Property="IsMouseOver" Value="True"/><Condition Property="IsPressed" Value="True"/></MultiTrigger.Conditions><Setter Property="Background" Value="Yellow"/><Setter Property="FontSize" Value="40"/></MultiTrigger>  </Style.Triggers></Style>
</Window.Resources><Grid><Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="251,110,0,0" VerticalAlignment="Top" Height="171" Width="320"/>
</Grid>

2.3. DataTrigger 用法

DataTrigger 触发器会在绑定数据满足指定条件时应用属性值或执行操作。部分属性和代码示例如图

属性说明
Binding获取或设置产生数据对象的属性值的绑定,该属性返回要与触发器的 Value 属性进行比较的值。
Value获取或设置要与元素的属性值进行比较的值。该比较是一项引用相等性检查。
Setters获取 Setter 对象的集合,这些对象描述当满足指定条件时要应用的属性值。

在这里插入图片描述

<Grid><CheckBox x:Name="checkBox" Content="大号字体" HorizontalAlignment="Left" Margin="269,84,0,0" VerticalAlignment="Top" Height="26" Width="119"/><!--设置默认字体大小后,会让样式里面的Setter属性不生效,其他属性同理--><TextBox Text="你猜字体会不会变大" Foreground="Red" HorizontalAlignment="Left" Height="101" Margin="269,162,0,0" TextWrapping="Wrap"  VerticalAlignment="Top" Width="268"><TextBox.Style><Style TargetType="TextBox"><Style.Triggers><DataTrigger Binding="{Binding ElementName=checkBox, Path=IsChecked}" Value="true"><!--DataTrigger.Setters可省略--><Setter Property="FontSize" Value="28"/><Setter Property="Foreground" Value="Blue"/></DataTrigger></Style.Triggers></Style></TextBox.Style></TextBox></Grid>

2.4. EventTrigger 用法

EventTrigger是事件触发器,应用一组操作影响一个事件。其部分属性和代码示例如图如下,既演示将EventTrigger写在Window.Resource内,又演示写在控件内。

属性说明
RoutedEvent获取或设置将激活该触发器的 RoutedEvent。
Actions获取事件发生时要应用的操作的集合。

在这里插入图片描述

	<Grid><Button Content="Button" HorizontalAlignment="Left" Margin="269,291,0,0" VerticalAlignment="Top" Height="35" Width="51"><Button.Style><Style TargetType="Button"><Style.Triggers><!--也可只写RoutedEvent="MouseEnter"--><EventTrigger RoutedEvent="Button.MouseEnter" ><!--调用动画的故事板--><BeginStoryboard><Storyboard><!--DoubleAnimation的重要内容,From (值从哪里开始), 包含To (值到哪里结束), Duration (值的变化经过多少时间)--><!--本处省略了From (值从哪里开始),TargetProperty为控件的Width,Duration内参数为时分秒,在1.5s内达到300--><DoubleAnimation To="300" Duration="0:0:1.5" Storyboard.TargetProperty="Width"/></Storyboard></BeginStoryboard></EventTrigger></Style.Triggers></Style></Button.Style></Button></Grid>

总结

  • 触发器既可以写在Window.Resource内,又可以写在控件内。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89343.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89343.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89343.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记本好书:矩阵力量:线性代数全彩图解+微课+Python编程

书名&#xff1a;矩阵力量&#xff1a;线性代数全彩图解微课Python编程 作者&#xff1a;姜伟生 出版社&#xff1a;清华大学出版社 出版时间&#xff1a;2023-06-01 ISBN&#xff1a;9787302632511 品牌方&#xff1a;清华大学出版社有限公司 发现一本好书&#xff0c;但是一…

‌Webpack打包流程

Webpack打包流程的核心步骤包括初始化配置、解析入口文件、构建依赖图、模块转换、资源优化和输出文件‌。该流程通过递归分析模块依赖关系&#xff0c;结合加载器和插件处理各类资源&#xff0c;最终生成优化后的静态文件。 ‌核心流程概述‌ ‌初始化配置‌&#xff1a;读取…

入门pytorch-联邦学习

本文联邦学习的代码引用于https://github.com/shaoxiongji/federated-learning 本篇文章相当于带大家读一遍联邦学习的代码&#xff0c;同时加深了大家对联邦学习和Pytorch框架的理解。 这里想简单介绍一下联邦学习。 联邦学习说白了&#xff0c;就是假如有 N N N个数据拥有…

半导体和PN结

1. 什么是半导体&#xff1f; 导体&#xff0c;电阻率小&#xff0c;即电流容易通过的材料&#xff1b;Cu 绝缘体&#xff0c;导电性低&#xff0c;即电流不易通过的材料&#xff1b;塑料 半导体&#xff0c;常温下导电性能介于导体和绝缘体之间&#xff0c;是一种导电可控的…

如何分析大语言模型(LLM)的内部表征来评估文本的“诚实性”

如何分析大语言模型(LLM)的内部表征来评估文本的“诚实性” 基于这样一个假设:模型在生成诚实和不诚实回答时,其内部状态会存在系统性差异 LAT :线性人工断层扫描 我们通过一个生活化的例子来理解如何通过分析大语言模型的内部表征评估文本的“诚实性”。 场景类比:判…

【算法】动态规划 矩阵 :62. 不同路径

62. 不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

LabVIEW调用Excel宏实现数据可视化

通过LabVIEW 的 ActiveX 接口&#xff0c;调用 Excel 应用程序&#xff0c;实现打开指定Excel 工作簿并运行其中宏&#xff08;如 “GraphData” 宏&#xff09;&#xff0c;将工作表数据以图表形式展示。通过 ActiveX 自动化技术&#xff0c;打通 LabVIEW 与 Excel 交互通道&a…

初始CNN(卷积神经网络)

卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称 CNN&#xff09;作为深度学习的重要分支&#xff0c;在图像识别、目标检测、语义分割等领域大放异彩。无论是手机上的人脸识别解锁&#xff0c;还是自动驾驶汽车对道路和行人的识别&#xff0c;背后都离…

深度解析Spring Bean生命周期:从字节码到可用对象的奇幻旅程

&#x1f331; 深度解析Spring Bean生命周期&#xff1a;从字节码到可用对象的奇幻旅程 你是否曾困惑&#xff1a;为什么PostConstruct有时不执行&#xff1f;为什么循环依赖报错如此难解&#xff1f;为什么AOP代理在某些场景失效&#xff1f; 本文将彻底拆解Spring Bean的16个…

MySQL 复合查询和内外连接 -- 子查询,多表查询,自连接,合并查询,表的内外连接

目录 1. 子查询 1.1 单行子查询 1.2 多行子查询 1.3 多列子查询 1.4 在 from 子句中使用子查询 2. 多表查询 3. 自连接 4. 合并查询 4.1 union 4.2 union all 5. 表的内连接 6. 表的外连接 下列先给出该博客中所用到的所有表的数据。 &#xff08;1&#xff09;部…

【STM32+LAN9252+HAL库】EtherCAT从站搭建 保姆级教程

目录 一、生成协议栈及XML文件 二、使用stm32CuboMX配置外设 三、协议栈移植 鉴于本人对EtherCAT的掌握程度十分有限&#xff0c;这篇文章仅作为我搭建基础从站的过程记录不做更多讲解。本文内容主要为SPI模式的基础搭建&#xff0c;更多深入的学习资料和细节&#xff0c;大家…

【LeetCode 热题 100】239. 滑动窗口最大值——(解法二)滑动窗口+单调队列

Problem: 239. 滑动窗口最大值 题目&#xff1a;给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值 。 【LeetCode 热题 100】239. 滑…

MySQL 8.0 连接 5.x 服务器认证问题

总的来说&#xff0c;答案是&#xff1a;可以&#xff0c;但是需要特别注意认证方式的兼容性问题。 MySQL 8.0 引入了新的默认认证插件 caching_sha2_password&#xff0c;而 MySQL 5.x&#xff08;及更早版本&#xff09;使用的是 mysql_native_password。当你用一个 8.0 的客…

Spring原理揭秘(一)

什么是spring&#xff1f; spring框架是一个轻量级的开源的JavaEE框架。 所谓轻量级则是&#xff1a;占用空间小&#xff0c;代码侵入性低&#xff0c;代码耦合度低&#xff0c;降低代码复杂度&#xff0c;可以轻易适配多种框架。 随着spring的不断发展&#xff0c;它所占用…

Visual Studio Code自用搜索技巧整理

多文件跨行搜索 用途 在多个日志文件中搜索跨行日志 方法 1.用VS Code打开待搜索文件所在的目录&#xff1b; 2.按快捷键&#xff08;CtrlShiftF&#xff09;打开全局搜索&#xff1b; 3.点击搜索框右侧的开启正则表达式&#xff1b; 4.输入正则表达式&#xff0c;例如&…

Axure PR 9 验证码登录 案例

大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们来用Axure来制作一个短信验证登录页面的小案例。 验证码登录小案例 创建手机号输入框所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.在元件库中拖出一个矩形元件&#xff0c;选中矩形元件&#xf…

监听器模式

1. 问题背景 假设我们有一个 银行账户管理系统&#xff0c;该系统需要监控用户账户余额的变动&#xff0c;并在发生变动时&#xff0c;自动执行一些相关的操作&#xff0c;比如发送 余额变动通知&#xff08;如短信、邮件等&#xff09;。为了实现这一功能&#xff0c;我们希望…

帕鲁杯应急响应赛题:知攻善防实验室

一、背景信息 在这个跳跃的数字舞台上&#xff0c;数据安全成了政企单位稳航的重要压舱石。某政企单位&#xff0c;作为一艘驶向未来 的巨轮&#xff0c;对数据的把控丝毫不敢松懈。眼下&#xff0c;我们即将启航一场无与伦比的探险——“信息安全探索之 旅”。 这趟旅程的目的…

【硬核数学】2.2 深度学习的“微积分引擎”:自动微分与反向传播《从零构建机器学习、深度学习到LLM的数学认知》

欢迎来到本系列的第七篇文章。在上一章&#xff0c;我们用张量武装了我们的线性代数知识&#xff0c;学会了如何描述和操作神经网络中的高维数据流。我们知道&#xff0c;一个神经网络的“前向传播”过程&#xff0c;就是输入张量经过一系列复杂的张量运算&#xff08;矩阵乘法…

DAY 45 Tensorboard使用介绍

浙大疏锦行https://blog.csdn.net/weixin_45655710知识点回顾&#xff1a; tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战&#xff1a;MLP和CNN模型 作业&#xff1a;对resnet18在cifar10上采用微调策略下&#xff0c;用tensorboard监控训练过程…