当前位置: 首页 > news >正文

Trigger类

Trigger类

一、Trigger 是什么?

Trigger = 触发器 / 监听器
作用:
当控件的某个属性变成指定值时 → 自动执行 Setter 改变外观
一句话:
满足条件 → 自动改样式
比如:
  • 鼠标放上去 → 变色
  • 按钮禁用 → 变灰
  • 获得焦点 → 边框变红
这些全部靠 Trigger 实现!

二、Trigger 类的 3 个核心属性

 1 public class Trigger : TriggerBase
 2 {
 3     // 监听哪个属性(必填)
 4     public DependencyProperty Property { get; set; }
 5 
 6     // 监听属性变成什么值(必填)
 7     public object Value { get; set; }
 8 
 9     // 满足条件时,执行哪些 Setter(改样式)
10     public SetterBaseCollection Setters { get; set; }
11 }

固定语法:

<Trigger Property="监听的属性" Value="目标值"><Setter ... />  <!-- 满足条件就执行这些赋值 -->
</Trigger>

三、Trigger 必须写在 Style 里

Trigger 不能单独使用,必须放在:
1 <Style.Triggers>
2     <!-- 这里写触发器 -->
3 </Style.Triggers>

四、最常用的 5 种 Trigger(必学)

1. 鼠标悬浮 IsMouseOver="True"

最常用!鼠标放上去变色。
 1 <Style TargetType="Button">
 2     <Setter Property="FontSize" Value="18"/>
 3     <Setter Property="Background" Value="LightBlue"/>
 4 
 5     <Style.Triggers>
 6         <!-- 鼠标悬浮触发 -->
 7         <Trigger Property="IsMouseOver" Value="True">
 8             <Setter Property="Background" Value="DarkBlue"/>
 9             <Setter Property="Foreground" Value="White"/>
10         </Trigger>
11     </Style.Triggers>
12 </Style>

2. 按钮按下 IsPressed="True"

点击按钮时改变样式。
1 <Trigger Property="IsPressed" Value="True">
2     <Setter Property="Background" Value="Navy"/>
3 </Trigger>

3. 控件禁用 IsEnabled="False"

按钮不可用时自动变灰。
1 <Trigger Property="IsEnabled" Value="False">
2     <Setter Property="Background" Value="LightGray"/>
3     <Setter Property="Foreground" Value="DarkGray"/>
4 </Trigger>

4. 获得焦点 IsFocused="True"

输入框、按钮获得焦点时触发。
1 <Trigger Property="IsFocused" Value="True">
2     <Setter Property="BorderBrush" Value="Red"/>
3     <Setter Property="BorderThickness" Value="2"/>
4 </Trigger>

5. 文本框只读 IsReadOnly="True"

1 <Style TargetType="TextBox">
2     <Style.Triggers>
3         <Trigger Property="IsReadOnly" Value="True">
4             <Setter Property="Background" Value="#F0F0F0"/>
5         </Trigger>
6     </Style.Triggers>
7 </Style>

五、完整可运行示例(直接复制)

一个带完整交互效果的按钮样式

 1 <Window.Resources>
 2     <Style TargetType="Button" x:Key="CompleteButton">
 3         <!-- 默认样式 -->
 4         <Setter Property="FontSize" Value="18"/>
 5         <Setter Property="Foreground" Value="White"/>
 6         <Setter Property="Background" Value="#0077D4"/>
 7         <Setter Property="Padding" Value="10,6"/>
 8         <Setter Property="Margin" Value="10"/>
 9         <Setter Property="BorderThickness" Value="0"/>
10         <Setter Property="CornerRadius" Value="8"/>
11 
12         <!-- 触发器集合 -->
13         <Style.Triggers>
14             <!-- 1. 鼠标悬浮 -->
15             <Trigger Property="IsMouseOver" Value="True">
16                 <Setter Property="Background" Value="#005AA1"/>
17             </Trigger>
18 
19             <!-- 2. 鼠标按下 -->
20             <Trigger Property="IsPressed" Value="True">
21                 <Setter Property="Background" Value="#004488"/>
22             </Trigger>
23 
24             <!-- 3. 按钮禁用 -->
25             <Trigger Property="IsEnabled" Value="False">
26                 <Setter Property="Background" Value="#AAAAAA"/>
27             </Trigger>
28         </Style.Triggers>
29     </Style>
30 </Window.Resources>
31 
32 <Grid>
33     <Button Style="{StaticResource CompleteButton}" Content="完美交互按钮"/>
34 </Grid>

六、Trigger 可以同时写多个

一个 Style 里可以放N 个 Trigger,互不干扰。
1 <Style.Triggers>
2     <Trigger Property="IsMouseOver" Value="True">...</Trigger>
3     <Trigger Property="IsPressed" Value="True">...</Trigger>
4     <Trigger Property="IsEnabled" Value="False">...</Trigger>
5 </Style.Triggers>

七、Trigger 工作原理(一句话)

监听属性 → 等于目标值 → 自动执行 Setter → 改变外观

八、Trigger 总结(必背)

  1. Trigger = 条件触发样式修改
  2. 必须写在 <Style.Triggers>
  3. 固定格式:
1 <Trigger Property="监听属性" Value="目标值">
2     <Setter ... />
3 </Trigger>

  4.最常用触发属性:

  • IsMouseOver 鼠标悬浮
  • IsPressed 按钮按下
  • IsEnabled 控件启用 / 禁用
  • IsFocused 获得焦点
http://www.jsqmd.com/news/534415/

相关文章:

  • 谁在守护城市安全?2026年度优质AED厂家推荐 - 品牌2026
  • 2026年高性价比中俄物流公司推荐 全链路服务选型指南 - 资讯焦点
  • 无人机像果蝇一样思考:上交大『可微分物理』避障原理通俗解读
  • 规范执法流程:2026高速道路事故道路交通事故快速勘查系统厂商哪家好 - 品牌2026
  • 2026南昌优质寿司店推荐 适配多场景用餐需求 - 资讯焦点
  • 2026年3月四川乐山碾米机/粉碎机/细糠碾米机/混合式碾米机/家用碾米机厂家综合测评 - 2026年企业推荐榜
  • 2026年寄文件用什么快递最快?时效选择参考 - 品牌排行榜
  • 2026南昌适合儿童生日的日料店优质推荐榜 - 资讯焦点
  • thousands of
  • 深度学习模型复杂度计算指南:从参数量到FLOPs的实战解析
  • 从工况难题到稳定产线:一文看懂四大系列减速机在工业现场的真实表现 - 企师傅推荐官
  • 一家专业活动策划公司,到底能为你做什么? - 麦麦唛
  • 2026有就业保障的铁路中专优质学校推荐榜 - 资讯焦点
  • 云手机与云真机分别是指什么
  • 科学研判路况:2026国道事故道路交通事故快速勘查系统厂商哪家好 - 品牌2026
  • 2026 年跑步专用变色镜片深度测评:抗冲击材质与五大品牌全解析 - 品牌策略主理人
  • 运动健身之后吃特元素氨基丁酸,能缓解身体疲劳吗 - 资讯焦点
  • 避坑指南:Ubuntu 22.04 装向日葵远程控制,解决黑屏和依赖报错(附完整命令)
  • 2026金属丝网厂家排行|边坡/勾花/护栏/石笼网优选TOP3 - 深度智识库
  • 南昌师资强私立小学2026招生政策全解析 - 资讯焦点
  • 选对厂家更安心:乐普Le AED系列如何以智慧管理重塑急救闭环? - 品牌2026
  • 2026余干县专业体检医院推荐榜 资质全费用合理 - 资讯焦点
  • 2026年3月四川乐山小型碾米机/小型家用碾米机/家用小型碾米机/新型碾米机/家庭碾米机厂家哪家好 - 2026年企业推荐榜
  • 2026年论文降重网站,AIGC检测/AIGC免费论文检测/AIGC降重,论文降重网站怎么选择
  • 2026年云服务器选购指南:高性价比与免费政策深度对比(移动云、阿里云、腾讯云、京东云) - 资讯焦点
  • 上岸必看!毕业2年差点因工殒命,到成为网安工程师(15K),我是怎样逆袭的?
  • 别再只盯着进口了!2026三维测量内窥镜性价比与口碑之选 - 品牌推荐大师1
  • Fun-ASR语音识别效果展示:实测会议录音、客服通话、访谈记录转写
  • 汽车应急启动电源厂家推荐哪家好?生产设计公司怎么选才靠谱 - 品牌2026
  • 从零构建医疗AI助手:基于LangChain4j与SpringBoot的实战开发指南