当前位置: 代码迷 >> 综合 >> WPF 学习之触发器
  详细解决方案

WPF 学习之触发器

热度:70   发布时间:2023-10-25 15:16:37.0

单条件的触发器

触发器需要写在style 样式表中

            <Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Foreground" Value="Red"/><Setter Property="Width" Value="220"/><Setter Property="Height" Value="45"/></Trigger></Style.Triggers>
 <Window.Resources><Style  x:Key="baseButtonStyle" TargetType="Button"><Setter Property="Width" Value="200"/><Setter Property="Height" Value=" 40"/></Style><Style x:Key="defaultButtonStyle" TargetType="Button" BasedOn="{StaticResource baseButtonStyle}"><Setter Property="FontSize" Value="25"/><Setter Property="Foreground" Value="blue"/><!--这个位置将定义触发器--><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Foreground" Value="Red"/><Setter Property="Width" Value="220"/><Setter Property="Height" Value="45"/></Trigger></Style.Triggers></Style></Window.Resources><Grid><StackPanel><Button Style="{StaticResource defaultButtonStyle}" Content="hello"  /><Button Style="{StaticResource defaultButtonStyle}" Content="hello" /><Button Style="{StaticResource defaultButtonStyle}" Content="hello"  /></StackPanel></Grid>

多条件触发器

多条件触发器是可以同时监视多个条件,同时也可以和单条件触发器同时存在:

下面介绍一个,当按钮被按下且满足IsmouseOver 的时候触发的多条件触发器

   <Window.Resources><Style  x:Key="baseButtonStyle" TargetType="Button"><Setter Property="Width" Value="200"/><Setter Property="Height" Value=" 40"/></Style><Style x:Key="defaultButtonStyle" TargetType="Button" BasedOn="{StaticResource baseButtonStyle}"><Setter Property="FontSize" Value="25"/><Setter Property="Foreground" Value="blue"/><!--这个位置将定义触发器--><Style.Triggers><MultiTrigger><MultiTrigger.Conditions><Condition Property="IsMouseOver" Value="true"/><Condition Property="IsFocused" Value="true"/><Condition Property="IsPressed" Value="true"/></MultiTrigger.Conditions><MultiTrigger.Setters><Setter Property="Foreground" Value="Red"/><Setter Property="Width" Value="220"/><Setter Property="Height" Value="45"/></MultiTrigger.Setters></MultiTrigger><!--<Trigger Property="IsMouseOver" Value="True"><Setter Property="Foreground" Value="Red"/><Setter Property="Width" Value="220"/><Setter Property="Height" Value="45"/></Trigger>--></Style.Triggers></Style></Window.Resources><Grid><StackPanel><Button Style="{StaticResource defaultButtonStyle}" Content="hello"  /><Button Style="{StaticResource defaultButtonStyle}" Content="hello" /><Button Style="{StaticResource defaultButtonStyle}" Content="hello"  /></StackPanel></Grid>

事件触发器:

时间触发器主要是基于事件的触发,这面使用的代码时Event .Trigger

需要住一事件触发器需要写在 下面,类似下面的代码

事件触发后会演示一个动画

                <!--事件触发器--><EventTrigger RoutedEvent="MouseEnter"><EventTrigger.Actions><!--创建一个动画 如,创建一个故事板--><BeginStoryboard><Storyboard><DoubleAnimation  Duration=" 0:0:0.2"Storyboard.TargetProperty="FontSize"To="30"> </DoubleAnimation></Storyboard></BeginStoryboard></EventTrigger.Actions>

  相关解决方案