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触发器的使用的更多相关文章

  1. WPF触发器(Trigger)

    WPF触发器(Trigger.DataTrigger.EventTrigger) WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改 ...

  2. WPF 触发器例子

    WPF的触发器很强大,这里简单附上触发器的一个小例子,分别用XMAL和CS代码来实现一个功能,鼠标悬停在button上时改变字体颜色 1.XMAL代码如下: <Window x:Class=&q ...

  3. wpf 触发器理解

    (1)属性触发器:其对应的类是Trigger.它在特定关联属性发生变化时被触发.一个属性的更改会在另一个属性中触发即时或动态更改. (2)数据触发器:其对应的类是DataTrigger.它在特定的CL ...

  4. WPF触发器(非数据库中的触发器)

    一.什么是触发器?触发器(Trigger)就是当某种条件满足后即完成相应逻辑功能的一部分程序组成.在当前的WPF中,Trigger一共有三种类型,它们分别是: (1)属性触发器:其对应的类是Trigg ...

  5. WPF触发器(Trigger、DataTrigger、EventTrigger)

    WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...

  6. WPF 触发器

    属性触发器:数据触发器:事件触发器

  7. WPFの触发器详解

    例子1 简单触发器Triggers——满足简答的条件,触发 <Window x:Class="Styles.SimpleTriggers" xmlns="http: ...

  8. wpf 触发器,属性触发器,事件触发器,事件触发器。

    <EventTrigger RoutedEvent="Mouse.MouseEnter"/> <DataTrigger Binding="{Bindin ...

  9. WPF触发器(Trigger) - DataTrigger

    官方文档中对DataTrigger的介绍 Represents a trigger that applies property values or performs actions when the ...

随机推荐

  1. jquery分页插件

    css代码: /*分页*/ .pageList { clear: both; overflow: hidden; } .pageList a, .pageList span { border: 1px ...

  2. Mybatis获取插入记录的自增长ID(转)

    1.在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名. <ins ...

  3. windows apache24 php Call to undefined function curl_init

    check dll files in dir: Apache24/bin libssh2.dll, ssleay32.dll, libeay32.dll http://nz.php.net/manua ...

  4. 第一篇英文短文《It All Starts With A Dream》

    http://www.ximalaya.com/#/17209107/sound/6883165 Dreaming. Do you or don’t you? Do you dream about t ...

  5. 十三、File Translator怎么写

    ---恢复内容开始--- 1. File Translator可以将信息从maya中导入和导出. 2. 创建一个file translator需要从MPxFileTranslator继承. 3. 函数 ...

  6. ionic tabs置顶

    找了好久怎么解决这问题,终于找到了一哥们留下来的经验,万分感谢,特此拷贝过来,留着下次以免忘记 我在主页ion-nav-bar元素上添加hide-nav-bar=“true”;然后又在ion-view ...

  7. Qt 环境下MAPX组件的编程

    使用mapx打包文件可以方便的迅速开发,今天介绍一种不使用打包文件,直接使用mapx组件的编程方法. 就像之前介绍flash控件编程的方法,首先建立一个qt demo.基于那个的窗口都可以. 本den ...

  8. mysqldump的使用

    mysqldump按导入:mysqldump -u用户名 -p密码 -h主机 数据库 < 路径eg:mysql -uroot -p1234 db1 < c:\a.txtmysqldump导 ...

  9. sublime 工具构建

    1 Sublime Text 3 配置react语法校验 原文地址:https://segmentfault.com/a/1190000004369542?_ea=585496 终端安装 npm in ...

  10. css3动画2(transform用法)

    1.直接写在样式里,比如一个小箭头,transform:rotate(135deg)即可 2.写动画过程,@keyframes和transform和animation组合起来用 写在@keyframe ...