样式(Styles)由三部分构成:设置器(Setter)、触发器(Triggers)、资源(Resources)。

(1)触发器,让样式的使用更加准确、灵活和高效。

(2)触发器(Triggers)主要分为三类,属性触发器(检查从属属性即WPF元素自身属性)、数据触发器(检查任意可绑定的属性)、事件触发器(用于监听事件)。

属性触发器

  检查从属属性的值,即WPF元素自身属性。比如按钮的内容、字体的大小、颜色等等。

    <Window.Resources><Style TargetType="Button"><Style.Triggers><Trigger Property="Content" Value="按钮"><Setter Property="ToolTip" Value="这是一个按钮">                   </Setter></Trigger></Style.Triggers></Style></Window.Resources>

多属性触发器

           <Window.Resources><Style TargetType="Button"><Style.Triggers><Trigger Property="Content" Value="按钮"><Setter Property="ToolTip" Value="这是一个按钮"></Setter></Trigger><Trigger Property="Content" Value="Button"><Setter Property="ToolTip" Value="This is a button"></Setter></Trigger></Style.Triggers></Style></Window.Resources> 

 

多条件属性触发器

  <Window.Resources><Style TargetType="Button"><Style.Triggers><MultiTrigger><!--条件列表--><MultiTrigger.Conditions><Condition Property="Content" Value="按钮"></Condition><Condition Property="Visibility" Value="Visible"></Condition></MultiTrigger.Conditions><!--样式--><Setter Property="ToolTip" Value="这是一个可见按钮"></Setter></MultiTrigger></Style.Triggers></Style></Window.Resources>

数据触发器 

可以检查任意可绑定的属性,比如CLR对象属性、XPath声明等。相对于属性触发器,数据触发器通常用来检查不可见的对象属性。

    <Window.Resources><Style TargetType="Button"><Style.Triggers><DataTrigger Binding="{Binding Path=Name}" Value="李宝亨"><Setter Property="Foreground" Value="Tomato"/></DataTrigger></Style.Triggers></Style></Window.Resources><Grid><Button Content="{Binding Path=Name}" Height="23" Margin="103,94,120,84" Name="button1" Width="75"/></Grid>

定义的Person类
public partial class MainWindow : Window{public MainWindow(){InitializeComponent();DataContext = new Person("李宝亨","21");        }class Person{string _Name;public string Name{get { return _Name; }set { _Name = value; }}string _Age;public string Age{get { return _Age; }set { _Age = value; }}public Person(string name,string age){_Name = name;_Age = age;}}}

多条件数据触发器
    <Window.Resources><Style TargetType="Button"><Style.Triggers><MultiDataTrigger><!--条件列表--><MultiDataTrigger.Conditions><Condition Binding="{Binding Path=Name}" Value="李宝亨"/><Condition Binding="{Binding Path=Age}" Value="21"/></MultiDataTrigger.Conditions><Setter Property="Foreground" Value="Tomato"/></MultiDataTrigger></Style.Triggers></Style></Window.Resources><Grid><Button Content="{Binding Path=Name}" Height="23" Margin="103,94,120,84" Name="button1" Width="75"/></Grid>

事件触发器

事件触发器用来监听事件。当一个事件发生时,事件触发器就会引发相关的动画事件来进行响应。

   <Window.Resources><Style TargetType="Button"><Style.Triggers><!--事件触发器--><EventTrigger RoutedEvent="MouseEnter"><BeginStoryboard><Storyboard><DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0.1"  Duration="0:0:3"></DoubleAnimation></Storyboard></BeginStoryboard></EventTrigger></Style.Triggers></Style></Window.Resources>

原文地址:http://tianzengyan.blog.163.com/blog/static/1675840912012920105524490/

转载于:https://www.cnblogs.com/mqxs/p/5489237.html

【转】【WPF】WPF样式(Style)—触发器相关推荐

  1. WPF的样式(Style)继承

    WPF的样式(Style)继承 参考自http://www.cnblogs.com/SkyD/archive/2008/08/09/1264294.html,非常感谢. 用Style的BaseOn属性 ...

  2. WPF入门(六)样式Style

    wpf提供了一种类似css的对象- style,但是比css更强大.它支持直接设定属性,更改呈现模板,触发器,事件触发等.MSDN描述如下: MSDN 可以在从 FrameworkElement 或 ...

  3. wpf之样式属性、事件、触发器

    wpf的样式可以把属性一样的设置写在样式里面,这样可以减少代码量. 举个简单的例子: <Window x:Class="WpfPictureClick.MainWindow" ...

  4. wpf Combobox 样式的问题

    wpf Combobox 样式的问题 <!-- Combobox--><Style x:Key="ComboBoxReadonlyToggleButton" Ta ...

  5. 愤怒者系列(一) WPF引用样式文件

    今天我们说一下wpf引用样式资源文件. wpf的样式控制分为行内,页内,和样式文件.而样式资源文件又分为程序内的样式文件和页内的样式文件. 我们今天讲的是引用的样式文件,因为可以切换样式文件来改变主题 ...

  6. WPF ComboBox样式

    一.样式的样子就是这样的 二.样式Style - 不可编辑请设置 属性为ReadOnly=true属性 1 <ResourceDictionary xmlns="http://sche ...

  7. WPF: WPF 中的 Triggers 和 VisualStateManager

    在之前写的这篇文章 WPF: 只读依赖属性的介绍与实践 中,我们介绍了在 WPF 自定义控件中如何添加只读依赖属性,并且使其结合属性触发器 (Trigger) 来实现对控件样式的改变.事实上,关于触发 ...

  8. React 项目----内联样式style的使用 (12)

    在此我们之前学习了react的基本的语法,对于页面我们还经常关注的是页面的样式,那么react 项目中,我们应该如何使用样式 首先我们来做一个简单的页面一个评论的列表 模拟数据: commentLis ...

  9. css vue 内联_vue 内联样式style中的background

    在我们使用vue开发的时候   有很多时候我们需要用到背景图 这个时候会直接使用 内联样式 直接把你拿到的数据拼接上去 注意  在vue中直接使用style时 花括号一定别忘记 还有就是你的url一定 ...

  10. GeoServer样式(style)设置

    GeoServer样式style设置 GeoServer Style定义 CSS Style CSS Style安装 CSS Style定义 应用自定义样式 利用其它软件配图并将Style导入GeoS ...

最新文章

  1. python计算学习_跟老齐学Python之用Python计算
  2. WeifenLuo.WinFormsUI.Docking
  3. OpenMPI 安装
  4. tensorflow随笔-读取多个文件
  5. 算法系列:5分钟了解哈希算法
  6. 【转载】印制板设计的流程及注意事项
  7. SpringBoot 中 @Transactional 的使用
  8. Linux redis常用命令
  9. java map集合如何遍历效率高 java中Map遍历的方式
  10. Redis中SDS简单动态字符串
  11. 解放军--女“黑客”
  12. perf top 实时分析 CPU 使用情况
  13. 英雄联盟全球总决赛历届冠军名单
  14. 读后感:【许岑—如何成为有效学习的高手】
  15. LabVIEW编更改研华数字板卡中DIO方向 例程与相关资料
  16. debian9.6安装和卸载新立得软件包管理器
  17. H 指数 (citations[index] > h 才能符合条件)
  18. 二叉树经典问题-通过前序和后序序列重建二叉树
  19. 古董电脑室:2019日记簿(二)
  20. 云笔记Leanote,超级好用的一款开源云笔记

热门文章

  1. 定时器0工作方式1,定时1s
  2. Python基础05 缩进和选择
  3. MATLAB中处理边界的函数
  4. python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较
  5. DIP第十章习题解答
  6. oracle sysman 不存在_Oracle无法对所有 EM 相关帐户解锁
  7. 自备干货!如何有效的做竞品迭代分析
  8. JSON.parse(text[, reviver])
  9. [整理]zepto的初次使用
  10. hdu 2031 进制转换