WPF触发器的使用
-
WPF中定义了五个触发器类:Trigger、MultiTrigger、DataTrigger、multiDataTrigger、EventTrigger。下面我来介绍一下怎么使用这几个触发器的使用方法。
Trriger(单一条件的触发器):
<Page x:Class="StyleTest.Trigger"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="Trigger">
<Page.Resources>
<Style x:Key="smallText">
<Setter Property="Control.Foreground" Value="blue"/>
<Setter Property="Control.FontSize" Value="20"/>
<Setter Property="Control.FontFamily" Value="Times new Roman"/>
<Setter Property="Control.FontWeight" Value="Bold"/>
<Style.Triggers> <!--这里使用了触发器,当鼠标移过控件的时候,控件的风格发生改变-->
<Trigger Property="Control.IsMouseOver" Value="True">
<Setter Property="Control.Foreground" Value="red"/>
<Setter Property="Control.FontSize" Value="24"/>
</Trigger>
</Style.Triggers>
</Style>
</Page.Resources>
<StackPanel>
<TextBlock Style="{StaticResource smallText}">旅望因高尽</TextBlock>
<TextBlock Style="{StaticResource smallText}">乡心遇物悲</TextBlock>
<TextBlock Style="{StaticResource smallText}">故林归宿处</TextBlock>
<TextBlock Style="{StaticResource smallText}">一叶下梧桐</TextBlock>
<Button Style="{StaticResource smallText}">旅思</Button>
</StackPanel>
</Page>MultiTrigger(多条件的触发器):
<Page x:Class="StyleTest.Multitrigger"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="Multitrigger">
<Page.Resources>
<Style x:Key="smallText">
<Setter Property="Control.Foreground" Value="blue"/>
<Setter Property="Control.FontSize" Value="20"/>
<Setter Property="Control.FontFamily" Value="Times New Roman"/>
<Setter Property="Control.FontWeight" Value="Bold"/>
<Style.Triggers>
<Trigger Property="Control.IsMouseOver" Value="True">
<Setter Property="Control.Foreground" Value="red"/>
</Trigger>
<MultiTrigger> <!--定义触发器-->
<MultiTrigger.Conditions>
<Condition Property="Control.IsMouseOver" Value="True"/> <!--通过Condition定义触发条件-->
<Condition Property="Button.IsPressed" Value="True"/> <!--通过Condition定义触发条件-->
</MultiTrigger.Conditions>
<Setter Property="Control.Foreground" Value="gray"/>
<Setter Property="Control.FontStyle" Value="Italic"/>
</MultiTrigger>
</Style.Triggers>
</Style>
</Page.Resources>
<StackPanel>
<Button Style="{StaticResource smallText}">床前明月光</Button>
<Button Style="{StaticResource smallText}">疑是地上霜</Button>
<Button Style="{StaticResource smallText}">举头望明月</Button>
<Button Style="{StaticResource smallText}">低头思故乡</Button>
</StackPanel>
</Page>DataTrigger(数据触发器):DataTrigger和MultiDataTriffer这一对触发器和Trigger和MultiTrigger非常类似。但是DataTrigger多了一个Binding属性,其语法如下:
<DataTrigger Binding="{Binding ElementName=控件名,path=空间中的相应属性}" value="相关属性的值">
如:
<Page x:Class="StyleTest.DataTrigger"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="DataTrigger">
<Page.Resources>
<Style x:Key="smallText">
<Setter Property="Control.Foreground" Value="Black"/>
<Setter Property="Control.FontSize" Value="24"/>
<Setter Property=" Control.FontFamily" Value="Times New Roman"/>
<Setter Property="Control.FontWeight" Value="Regular"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=italicFont, Path=IsChecked}" Value="True"> <!--这里绑定控件的名称,及控件属性-->
<Setter Property=" Control.FontStyle" Value="Italic"/> <!--当该控件触发该事件的时候,则所有控件的字体样式变为斜体-->
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=boldFont, Path=IsChecked}" Value="True">
<Setter Property="Control.FontStyle" Value="Normal"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=redFont, Path=IsChecked}" Value="True">
<Setter Property=" Control.Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=blueFont, Path=IsChecked}" Value="True">
<Setter Property="Control.Foreground" Value="Blue"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=btnBold, Path=IsPressed}" Value=" True">
<Setter Property="Control.FontSize" Value="12"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Page.Resources>
<StackPanel>
<GroupBox>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<RadioButton Name="italicFont" Grid.Row="0" Grid.Column="0">斜体</RadioButton>
<RadioButton Name="boldFont" Grid.Row="0" Grid.Column="1">正常</RadioButton>
<RadioButton Name="redFont" Grid.Row="1" Grid.Column="0">红色</RadioButton>
<RadioButton Name="blueFont" Grid.Row="1" Grid.Column="1">蓝色</RadioButton>
</Grid>
</GroupBox>
<TextBlock Style="{StaticResource smallText}">床前明月光</TextBlock>
<TextBlock Style="{StaticResource smallText}">疑是地上霜</TextBlock>
<TextBlock Style="{StaticResource smallText}">举头望明月</TextBlock>
<TextBlock Style="{StaticResource smallText}">低头思故乡</TextBlock>
<Button x:Name="btnBold" Style="{StaticResource smallText}">粗体</Button>
</StackPanel>
</Page>
版权声明:本文为博主原创文章,未经博主允许不得转载。
WPF触发器的使用的更多相关文章
- WPF触发器(Trigger)
WPF触发器(Trigger.DataTrigger.EventTrigger) WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改 ...
- WPF 触发器例子
WPF的触发器很强大,这里简单附上触发器的一个小例子,分别用XMAL和CS代码来实现一个功能,鼠标悬停在button上时改变字体颜色 1.XMAL代码如下: <Window x:Class=&q ...
- wpf 触发器理解
(1)属性触发器:其对应的类是Trigger.它在特定关联属性发生变化时被触发.一个属性的更改会在另一个属性中触发即时或动态更改. (2)数据触发器:其对应的类是DataTrigger.它在特定的CL ...
- WPF触发器(非数据库中的触发器)
一.什么是触发器?触发器(Trigger)就是当某种条件满足后即完成相应逻辑功能的一部分程序组成.在当前的WPF中,Trigger一共有三种类型,它们分别是: (1)属性触发器:其对应的类是Trigg ...
- WPF触发器(Trigger、DataTrigger、EventTrigger)
WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...
- WPF 触发器
属性触发器:数据触发器:事件触发器
- WPFの触发器详解
例子1 简单触发器Triggers——满足简答的条件,触发 <Window x:Class="Styles.SimpleTriggers" xmlns="http: ...
- wpf 触发器,属性触发器,事件触发器,事件触发器。
<EventTrigger RoutedEvent="Mouse.MouseEnter"/> <DataTrigger Binding="{Bindin ...
- WPF触发器(Trigger) - DataTrigger
官方文档中对DataTrigger的介绍 Represents a trigger that applies property values or performs actions when the ...
随机推荐
- javascript匿名函数应用
1.给指定对象新增一些属性的写法: /*给一个对象增加属性*/ var myDate=(function(obj){ obj.addName=function(name){ this.name=nam ...
- PL/SQL如何导入dmp文件
-------------创建表空间 create tablespace portal_data datafile'E:\OracleDB\System_TableSpace\portal_data0 ...
- Python-10 字典
#1 创建 dict1={'欢欢':'i love','小高高':'you'} dict2={1:'one',2:'two',3:'three'} dict3={} #2 访问元素 print('欢欢 ...
- 微信连wifi
微信连wifi 首先需要到微公众平台添加微信连wifi功能插件
- 关于MAC
以太LAN网中发送的分组称做帧,包含7个字段 MAC帧格式 前同步码 SFD DA SA 长度或类型 数据域 CRC 7字节,物理层加入 帧首定界符,1字节 目的地址,6字节 源地址,6字节 2字节 ...
- 使用FIO对SATA、SSD和PCIe Flash进行测试
首先声明,同事做的实验 使用fio对SATA.SSD.PCIE进行了测试 测试说明: 1.测试命名 sync_write_4k_32 sync表示测试方式,可以是sync或者libaio ...
- EasyUI TextBox的onkeypress事件
关于EasyUI TextBox的事件好像不多,像keypress,keydown在textbox的事件里都没有,所以要用这些事件要采取一些特殊的方法,今天用到了这些就记录一下,有两种方法 方法1: ...
- MATLAB处理信号得到频谱、相谱、功率谱
(此帖引至网络资源,仅供参考学习)第一:频谱 一.调用方法 X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值 ...
- java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1f303192 rejected from java.util.concurrent.ThreadPoolExecutor@11f7cc04[Terminated, pool size = 0, active threads
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1f303192 rejec ...
- window10系统安装SQL数据库和小蝴蝶的问题
最近刚刚升了windows10系统.由于以前一直使用的是SQL2008数据库,所以也就没有下载最新的数据库,但是在安装的过程中一直提示让重启,重启了很多回也没有用. 在启动SQL2008安装程序的时候 ...