样式(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. Atitit.电脑图片与拍摄图片的分别

    Atitit.电脑图片与拍摄图片的分别 1. Extname都是jpg的..1 1.1. 数码照片的Exif信息, 1 1.2. 是否有人脸1 1.3. 是否skin图1 1.4. 是否大面积色素单一 ...

  2. SharePoint Tricks - Survey

    1. SharePoint 2010中,在Survey的问题框中输入HTML代码可以用于插入图片或者链接,具体方法为: 1.1 在问题框中输入html, 1.2 在New Form和Edit Form ...

  3. android 回调函数二:应用实例

    前言:如果对android回调的概念不明白的请看:android 回调函数一:基本概念 1.定义接口 package com.app.util; public interface ZYJCallBac ...

  4. javascript 依次输入自动定焦框

    <html> <head> <script type="text/javascript"> function moveNext(object,i ...

  5. TreeSize工具介绍

    TreeSize Professional 工具是一个功能强大且灵活方便的硬盘空间管理工具,能在 Windows 8/7/Vista/XP 或 Windows Server 2012年/2008年/2 ...

  6. subline 快捷键

    subline 快捷键  安装 pretty css  html  后1,CTRl+ shift +H 格式化代码

  7. jquery实践案例--验证电子邮箱

    <input type="email" name="email" id="email" value="" onpa ...

  8. Busybox下mdev配置说明

    [TOC] mdev说明 mdev是busybox自带的一个简化版的udev,适合嵌入式应用场合.其具有使用简单的特点.它的作用就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需要的节点 ...

  9. UVA 10827 Maximum sum on a torus (LA)

    算法入门经典训练指南88页练习 ::这道题只要把原矩阵扩大4倍,那么其跟最大子矩阵的题目就很类似,把二维转化成一维,求最大的序列和,不过这个序列的长度不能超过n. 长度不能超过n? 那这道题又跟hdu ...

  10. html的input输入框边框

    1.输入框边框完全隐藏<input type="text" style="outline:none;border:0" /> 2.input去边框立 ...