Condividi tramite


Procedura: Attivare un'animazione quando viene modificato un valore di una proprietà

In questo esempio viene illustrato come usare un Trigger per avviare un Storyboard quando viene modificato un valore della proprietà. È possibile usare un Trigger all'interno di un Style, ControlTemplateo DataTemplate.

Esempio

Nell'esempio seguente viene utilizzata una Trigger per animare il Opacity di un Button quando la relativa proprietà IsMouseOver diventa true.

<!-- PropertyTriggerExample.xaml
     Shows how to use property triggers to start animations. -->
<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  WindowTitle="Animate Properties with Storyboards">
  <Page.Resources>
  
    <Style x:Key="PropertyTriggerExampleButtonStyle" TargetType="{x:Type Button}">
      
      <Setter Property="Opacity" Value="0.25" />
      
      <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">

          <Trigger.EnterActions>
            <BeginStoryboard>
              <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                  To="1" Duration="0:0:1" />
              </Storyboard>
            </BeginStoryboard>
          </Trigger.EnterActions>
          <Trigger.ExitActions>
            <BeginStoryboard>
              <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                  To="0.25" Duration="0:0:1" />
              </Storyboard>
            </BeginStoryboard>
          </Trigger.ExitActions>          
        </Trigger>               
      </Style.Triggers>    
    </Style>
  </Page.Resources>

  <StackPanel Margin="20">

    <Button Style="{StaticResource PropertyTriggerExampleButtonStyle}">
      Move the mouse over me.
    </Button>

  </StackPanel>
</Page>

Le animazioni applicate a oggetti di proprietà Trigger si comportano in modo più complesso rispetto alle animazioni di proprietà EventTrigger o alle animazioni avviate utilizzando i metodi Storyboard. Essi "trasferiscono" con animazioni definite da altri oggetti Trigger, ma compongono con animazioni EventTrigger e attivate tramite metodi.

Vedere anche