样式(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("李宝亨","");
}
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/

【转】【WPF】WPF样式(Style)—触发器的更多相关文章

  1. [No000012F]WPF(7/7) - 样式,触发器和动画

    WPF Tutorial : Beginning [^] WPF Tutorial : Layout-Panels-Containers & Layout Transformation [^] ...

  2. WPF中样式和行为和触发器

    原文:WPF中样式和行为和触发器 样式简介:样式(style)是组织和重用格式化选项的重要工具,不是使用重复的标记填充XAML,以便设置外边距.内边距.颜色以及字体等细节.而是创建一系列封装所有这些细 ...

  3. WPF样式与触发器(3)

    WPF中的各类控件元素, 都可以自由的设置其样式. 诸如: 字体(FontFamily) 字体大小(FontSize) 背景颜色(Background) 字体颜色(Foreground) 边距(Mar ...

  4. WPF 中的style 样式

    WPF相较于以前学的WinForm,WPF在UI设计与动画方面的炫丽是最吸引我来学习的.在WPF中XMAL代码的引入使得代码的编写能够前后端分离,为获得更好的界面,也使得我们不得不分出一半的时间花在前 ...

  5. wpf 中关于Image中样式Style的一点总结

    第一种写法: (1):定义样式 <Style x:Key="imgStyle" TargetType="Image">  : <!-- Tar ...

  6. WPF窗口模板——Style样式

    通用模板,窗口样式 <!-- 通用窗口模板 --> <ControlTemplate x:Key="CustomWindowTemplate" TargetTyp ...

  7. wpf:样式(转)

    http://www.cnblogs.com/shuang121/archive/2013/01/14/2860455.html 前面简单的说到了wpf中几种样式的用法,wpf有着类似web中的CSS ...

  8. WPF 精修篇 属性触发器

    原文:WPF 精修篇 属性触发器 属性触发器是通过  某个条件触发改变属性 通过无代码实现功能 <Style TargetType="{x:Type Label}"> ...

  9. WPF系列:样式

    一般简单的样式我们可以直接写在控件中 <Button Canvas.Left="20" Canvas.Top="30" Width="100&q ...

  10. WPF 自定义Metro Style窗体

    为了使WPF程序在不同版本的操作系统上保持一致的显示效果,我们需要重写WPF控件样式.这篇博客将展示如何创建一个Metro Style的WPF窗体. 首先先看一下最终窗体的效果图, 通过截图我们可以看 ...

随机推荐

  1. hadoop2.6完全分布式安装HBase1.1

    本文出自:http://wuyudong.com/archives/119 对于全分布式的HBase安装,需要通过hbase-site.xml文档来配置本机的HBase特性,由于各个HBase之间通过 ...

  2. iOS--开发之手势解锁

    本文主要介绍通过手势识别实现手势解锁功能,这个方法被广泛用于手机解锁,密码验证,快捷支付等功能实现.事例效果如下所示. 首先,我们先分析功能的实现过程,首先我们需要先看大致的实现过程: 1.加载九宫格 ...

  3. 【原】训练自己的haar-like特征分类器并识别物体(3)

    在前两篇文章中,我介绍了<训练自己的haar-like特征分类器并识别物体>的前三个步骤: 1.准备训练样本图片,包括正例及反例样本 2.生成样本描述文件 3.训练样本 4.目标识别 == ...

  4. iOS9 HTTP 不能正常使用的解决办法

    Google后查证,iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS) 新特性要求App内访问的网络必须使用H ...

  5. iOS网络-05-AFNetwoking原理及常用操作

    AFN的六大模块 NSURLConnection,主要对NSURLConnection进行了进一步的封装,包含以下核心的类: AFURLConnectionOperation AFHTTPReques ...

  6. SharePoint 指定配置数据库访问账户“域账户\用户”

    大家在安装sharepoint时都会遇到这个问题,域账户,什么是域账户哪?域账户简单理解就是网路账户,与本地账户不同,什么是域哪?域就是控制器. 一台Windows 计算机,它要么隶属于工作组,要么隶 ...

  7. nodejs创建一个HTTP服务器 简单入门级

    const http = require('http');//请求http.createServer(function(request, response){    /*createServer该函数 ...

  8. C#操作XML小结(转)

    一.简单介绍 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); ...

  9. JSON转换类(二)--List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  10. solr 导入数据

    从sqlserver导入数据到solr, solr 采用的版本6.0.1,并且本机解压到:F:\Tool\solr-6.0.1: 1. 命令启动solr,创建core 启动,进入solr文件目录下,执 ...