Condividi tramite


RepeatBehavior Struct

Definizione

Descrive in che modo una sequenza temporale ripete la sua durata semplice.

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct RepeatBehavior
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
public struct RepeatBehavior
Public Structure RepeatBehavior
<object property="iterationsx"/>
- or -
<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
- or -
<object property="Forever"/>
Ereditarietà
RepeatBehavior
Attributi

Esempio

In questo esempio vengono illustrati diversi modi per impostare RepeatBehavior di un'animazione e come queste impostazioni possono influire sull'animazione.

<StackPanel Margin="20">
    <StackPanel.Resources>
        <Storyboard x:Name="myStoryboard">

            <!-- Create an animation that repeats indefinitely. -->
            <DoubleAnimation 
              Storyboard.TargetName="ForeverRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="Forever" />

            <!-- Create an animation that repeats for four seconds. Because
                 the animation is 2 seconds each, you get two repeats. -->
            <DoubleAnimation 
              Storyboard.TargetName="FourSecondsRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX"
              From="1" To="5" Duration="0:0:2" RepeatBehavior="0:0:4" 
              EnableDependentAnimation="True"/>

            <!-- Create an animation that repeats twice. -->
            <DoubleAnimation 
              Storyboard.TargetName="TwiceRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="2x" 
              EnableDependentAnimation="True"/>

            <!-- Create an animation that repeats 0.5 times. The resulting animation
                 plays for one second, half of its Duration. It animates from 50 to 150. -->
            <DoubleAnimation 
              Storyboard.TargetName="HalfRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="0.5x" 
              EnableDependentAnimation="True"/>

            <!-- Create an animation that repeats for one second. The resulting animation
                 plays for one second, half of its Duration. It animates from 50 to 150. -->
            <DoubleAnimation 
              Storyboard.TargetName="OneSecondRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="0:0:1" 
              EnableDependentAnimation="True"/>
        </Storyboard>
    </StackPanel.Resources>

    <!-- Create several rectangles to animate. -->
    <Rectangle Fill="Red" Width="50" Height="20" >
        <Rectangle.RenderTransform>
            <ScaleTransform x:Name="ForeverRepeatingTransform" />
        </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Blue" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="FourSecondsRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Yellow" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="TwiceRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Green" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="HalfRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Orange" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="OneSecondRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>

        <!-- Create buttons to restart and stop the animations. -->
   <Button Margin="10" Content="Restart Animation" Click="Start_Animation" />


</StackPanel>
private void Start_Animation(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}

In questo esempio viene illustrato come impostare RepeatBehavior nel codice. Le animazioni sono uguali all'esempio precedente, ma hanno il set di attributi x:Name e il repeatBehavior è impostato nel metodo anziché in Start_Animation XAML.

<Storyboard x:Name="myStoryboard">

    <!-- Create an animation that repeats indefinitely. -->
    <DoubleAnimation x:Name="ForeverRepeatingAnimation"
                     Storyboard.TargetName="ForeverRepeatingTransform" 
                     Storyboard.TargetProperty="ScaleX" 
                     From="1" To="5" Duration="0:0:2"  />

    <!-- Create an animation that repeats for four seconds. Because 
        the animation is 2 seconds each, you get two repeats. -->
    <DoubleAnimation x:Name="FourSecondsRepeatingAnimation"
                     Storyboard.TargetName="FourSecondsRepeatingTransform" 
                     Storyboard.TargetProperty="ScaleX"
                     From="1" To="5" Duration="0:0:2"  
                     EnableDependentAnimation="True"/>

    <!-- Create an animation that repeats twice. -->
    <DoubleAnimation x:Name="TwiceRepeatingAnimation"
                     Storyboard.TargetName="TwiceRepeatingTransform" 
                     Storyboard.TargetProperty="ScaleX" 
                     From="1" To="5" Duration="0:0:2"  
                     EnableDependentAnimation="True"/>
</Storyboard>
private void Start_Animation(object sender, RoutedEventArgs e)
{
    // Set RepeatBehavior of Forever.
    var repeatBehavior = new RepeatBehavior();
    repeatBehavior.Type = RepeatBehaviorType.Forever;
    ForeverRepeatingAnimation.RepeatBehavior = repeatBehavior;

    // Set RepeatBehavior with Duration of 4 seconds.
    FourSecondsRepeatingAnimation.RepeatBehavior = new RepeatBehavior(new TimeSpan(0, 0, 4));

    // Set RepeatBehavior with Count of 2.
    TwiceRepeatingAnimation.RepeatBehavior = new RepeatBehavior(2);

    myStoryboard.Begin();
}

Commenti

Esistono tre tipi di comportamenti RepeatBehavior:

  • Intervallo di tempo: specifica la durata attiva di una sequenza temporale, eventualmente ripetendo l'animazione se la sequenza temporale.Duration è più breve. Ad esempio, una sequenza temporale con un valore timeline.Duration semplice pari a 1 secondo e un valore RepeatBehavior.Duration pari a 2,5 secondi verrà eseguito per 2,5 iterazioni e 2,5 secondi.
  • Numero di iterazioni: specifica il numero di volte in cui la durata semplice di una sequenza temporale viene riprodotta. Il numero di iterazioni predefinito è 1,0 e questo significa che la sequenza temporale è attiva per una delle sue semplici durate. Un conteggio di 0,5 specifica che la sequenza temporale è attiva per metà della durata semplice, mentre un conteggio di 2 specifica che la sequenza temporale ripete la durata semplice due volte. Per altre informazioni, vedere Conteggio.
  • Per sempre: la sequenza temporale si ripete in modo indefinito.

Un RepeatBehavior deve contenere solo valori non zero per uno dei due possibili proprietà dati Count o Duration. Se repeatBehaviorType è Count, il membro Count di un RepeatBehavior è il valore pertinente. Se repeatBehaviorType è Duration, il membro Duration di un RepeatBehavior è il valore pertinente. Se repeatBehaviorType è per sempre, non è rilevante il conteggiola durata ; il comportamento di ripetizione è tale che l'animazione di destinazione si ripeterà continuamente senza un limite.

Note sulla sintassi XAML

Non è possibile dichiarare un RepeatBehavior come oggetto condivisibile in un resourceDictionary.

Proiezione e membri di RepeatBehavior

Se si usa un linguaggio Microsoft .NET (C# o Microsoft Visual Basic), RepeatBehavior dispone di membri non dati disponibili e i relativi membri dati Conteggio, Durata e Tipo vengono esposti come proprietà di lettura-scrittura, non campi.

Se si usano estensioni del componente Visual C++ (C++/CX), RepeatBehavior dispone di membri non dati disponibili e i relativi membri dati Count, Duration e Type vengono esposti come proprietà di sola lettura, non campi.

Se si esegue la programmazione con C++ usando la libreria di modelli di Windows Runtime, solo i campi membro dati Count, Duration e Type esistono come membri di RepeatBehavior e non è possibile usare i metodi di utilità o le proprietà elencati nella tabella dei membri. Il codice WRL può accedere a metodi di utilità simili presenti nella classe RepeatBehaviorHelper .

Campi

Count

Numero di volte in cui deve ripetersi una sequenza temporale .

Duration

Intervallo di tempo per il quale deve ripetere una sequenza temporale .

Type

Modalità o tipo di comportamento ripetuto rappresentato da questa istanza come valore dell'enumerazione.

Si applica a