触发器系列(2) DataTrigger
触发条件:
DataTrigger是以控件DataContext的属性作为触发条件
本例效果说明:
<!--当值为1时将外边框的背景色改为黑色-->
<!--当值为2时 改变透明度达到闪动的效果-->
代码例如以下:
    <Window.Resources>
        <Style TargetType="Button" x:Key="newTemplate">
            <Setter Property="Background" Value="Green"/>
            <Setter Property="Foreground" Value="Blue"/>
            <Setter Property="Content" Value="Content"/>
            <!-- Button 模板-->
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="RootElement">
                            <!--边框背景-->
                            <Border.Background>
                                <SolidColorBrush x:Name="BorderBrush" Color="Red"/>
                            </Border.Background>
                            <!--背景取值Setter里的Background /Margin 改变外边框的大小-->
                            <Grid Background="{TemplateBinding Background}" Margin="6">
                                <Border x:Name="FocusVisual" Background="{TemplateBinding Foreground}"
                                        Opacity="0">
                                </Border>
                                <TextBlock x:Name="texb" Height="24" Text="{TemplateBinding Content}" ></TextBlock>
                            </Grid>
                        </Border>
                        <!--下面是触发器-->
                        <ControlTemplate.Triggers>
                            <!--当值为1时将外边框的背景色改为黑色-->
                            <DataTrigger Binding="{Binding ElementName=texb, Path=Text}" Value="1">
                                <Setter TargetName="RootElement" Property="Background" Value="Black"></Setter>
                            </DataTrigger>
                            <!--当值为2时 改变透明度达到闪动的效果-->
                            <DataTrigger Binding="{Binding ElementName=texb, Path=Text}" Value="2">
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard x:Name="playAnimation">
                                        <Storyboard
                                            Storyboard.TargetName="FocusVisual"
                                            Storyboard.TargetProperty="Opacity"
                                            >
                                            <DoubleAnimation
                                                AutoReverse="True"
                                                RepeatBehavior="Forever"
                                                To="1" Duration="0:0:1" />
                                        </Storyboard>
                                    </BeginStoryboard>
                                </DataTrigger.EnterActions>
                                <!--停止闪动动画-->
                                <DataTrigger.ExitActions>
                                    <StopStoryboard BeginStoryboardName="playAnimation">
                                    </StopStoryboard>
                                </DataTrigger.ExitActions>
                            </DataTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <Button x:Name="btn1" Width="100" Height="100"
                Content="1"
                ClickMode="Press" Style="{StaticResource newTemplate}" Click="btn1_Click">
        </Button>
        <Button Height="20" Margin="6,35,211,245" RenderTransformOrigin="0.325,-1.2" Click="Button_Click_1">常规高亮显示</Button>
        <Button Height="20" Margin="162,40,55,240" RenderTransformOrigin="0.325,-1.2" Click="Button_Click_2">高亮闪烁显示</Button>
    </Grid>
</Window>
效果图例如以下:
触发器系列(2) DataTrigger的更多相关文章
- WPF触发器(Trigger、DataTrigger、EventTrigger)
		WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ... 
- WPF触发器(Trigger)
		WPF触发器(Trigger.DataTrigger.EventTrigger) WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改 ... 
- WPF总结
		WPF UI布局 模板总结控件可以通过ItemTemplate="{StaticResource Template}"绑定指定的模板: 数据源总结控件可以通过ItemsSource ... 
- MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句
		第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ... 
- [WPF系列]-数据邦定之DataTemplate 使用 DataTrigger 来应用属性值
		使用 DataTrigger 来应用属性值 当前表示不会告诉我们某个 Task 是家庭任务还是办公室任务.记住 Task 对象拥有类型为 TaskType 的 TaskType 属性,该类型是一个枚举 ... 
- information_schema系列五(表,触发器,视图,存储过程和函数)
		这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益. 1:TABLES TABLES这张表毫无疑问了,就是记录的数据库中表 ... 
- .Net程序员学用Oracle系列(8):触发器、任务、序列、连接
		<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ... 
- wpf之DataTrigger 数据触发器
		wpf中,根据数据的值的不同,UI的界面随之改变(显示控件.隐藏控件以及改变控件的其它属性), 这时我们可以用DataTrigger数据触发器. 下面两个案例实现同样的功能,当条件(数据的值)不同时, ... 
- wpf之数据触发器DataTrigger
		wpf, 根据绑定的属性的值的不同(数据分类),界面上显示不同的控件(绑定不同类型的属性),可以使用数据库触发器DataTrigger实现这一功能. 实现的效果如下: 首先建立实体类: 更改通知类: ... 
随机推荐
- Redis(四)Redis高级
			一Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 r ... 
- 【51nod】1565 模糊搜索
			题解 这个字符集很小,我们可以把每个字符拿出来做一次匹配,把第一个字符串处理每个出现过的该字符处理成一个区间加,即最后变成第一个字符串的该位置能够匹配某字符 例如对于样例 10 4 1 AGCAATT ... 
- HTTP.Socket.TCP详解
			这会没事,整理了一下HTTP,socket,TCP之间的关系与区别,我们在面试的时候应该会经常问到这方面的东西,那么什么是HTTP呢? HTTP属于老话题了,在项目中我们经常需要往服务端发POST或者 ... 
- 全文搜索引擎 Elasticsearch (一)
			一.安装 Elastic 需要 Java 8 环境.如果你的机器还没安装 Java,可以参考这篇文章,注意要保证环境变量JAVA_HOME正确设置. 安装完 Java,就可以跟着官方文档安装 Elas ... 
- Python并发编程-协程实现socketserver
			#server.py from gevent import monkey;monkey.patch_all() import socket import gevent sk = socket.sock ... 
- C#语言-NPOI.dll导入Excel功能的实现
			前言:刚工作那会,公司有一套完善的MVC框架体系,每当有导入EXCEL功能要实现的时候,都会借用框架里自带的导入方法,一般三下五除二就完成了,快是快,可总是稀里糊涂的,心里很没有底.前几天,在另一个原 ... 
- 机器学习:KNN-近邻算法
			一.理论知识 1.K近邻(k-Nearest Neighbor,简称KNN)学习是一种常用的监督学习. 工作机制:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个的信 ... 
- 支撑大规模公有云的Kubernetes改进与优化 (1)
			Kubernetes是设计用来实施私有容器云的,然而容器作为公有云,同样需要一个管理平台,在Swarm,Mesos,Kubernetes中,基于Kubernetes已经逐渐成为容器编排的最热最主流的平 ... 
- 深入理解ajax系列第四篇
			前面的话 现代Web应用中频繁使用的一项功能就是表单数据的序列化,XMLHttpRequest 2级为此定义了FormData类型.FormData为序列化表单以及创建与表单格式相同的数据提供了便利. ... 
- 机器学习之路:python 字典特征提取器 DictVectorizer
			python3 学习使用api 将字典类型数据结构的样本,抽取特征,转化成向量形式 源码git: https://github.com/linyi0604/MachineLearning 代码: fr ... 
