WPF系列教程(二十九):触发器Triggers、MultiTrggers、EventTrigger——属性触发器、多触发器、事件触发器

使用触发器可以自动完成简单的样式改变。
项目源码

触发器

在Style定义时使用Style.Triggers属性来实现:


<Style.Triggers>
   <Trigger Property="Control.IsFocused" Value="True">
       
       <Setter Property="Control.Foreground" Value="DarkRed"/>
   Trigger>
Style.Triggers>

给按钮使用该Style及其触发器:

<Button Name="btn1" Content="Button" Margin="5" VerticalAlignment="Top" Style="{StaticResource BigFontButton}"/>

当点击按钮,按钮获得焦点时,触发样式“前景色变为深红色”:
WPF系列教程(二十九):触发器Triggers、MultiTrggers、EventTrigger——属性触发器、多触发器、事件触发器_第1张图片
当鼠标点击下方TextBox时,按钮失去焦点,又变回触发之前的样式。
再设置一个触发器:

<Trigger Property="Button.IsPressed" Value="True">
    <Setter Property="Control.Foreground" Value="Blue"/>
Trigger>

则在按下的时候为蓝色,弹起为红色。

多触发器

设置满足多个触发条件时才触发控件的样式改变。利用MultiTrigger进行定义,用MultiTrigger.Conditions定义多个条件的集合,用MultiTrigger.Setters应用改变的样式:

<Style.Triggers>
   <MultiTrigger>
       <MultiTrigger.Conditions>
           <Condition Property="Control.IsFocused" Value="True"/>
           <Condition Property="Control.IsMouseOver" Value="True"/>
       MultiTrigger.Conditions>
       <MultiTrigger.Setters>
           <Setter Property="Control.Foreground" Value="SkyBlue"/>
       MultiTrigger.Setters>
   MultiTrigger>
Style.Triggers>

结果,只有当按钮获取焦点且鼠标悬停与按钮上方时,才能应用触发器样式改变:
WPF系列教程(二十九):触发器Triggers、MultiTrggers、EventTrigger——属性触发器、多触发器、事件触发器_第2张图片

事件触发器

定义在鼠标进入和离开时用故事板动画改变字体的大小,使得大小的变化为逐渐变化,不是突变。使用EventTrigger属性进行改变:

<Style.Triggers>
    <EventTrigger RoutedEvent="Mouse.MouseEnter">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="FontSize" To="48"/>
                
            Storyboard>
        BeginStoryboard>
    EventTrigger>
<EventTrigger RoutedEvent="Mouse.MouseLeave">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Duration="0:0:1" Storyboard.TargetProperty="FontSize" To="10"/>
                
            Storyboard>
        BeginStoryboard>
    EventTrigger>
Style.Triggers>

你可能感兴趣的:(WPF教程,c#,wpf,c语言)