RepeatBehavior Структура

Определение

Описывает, как временная шкала повторяет свою простую длительность.

/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct RepeatBehavior
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct RepeatBehavior
Public Structure RepeatBehavior
<object property="iterationsx"/>
- or -
<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
- or -
<object property="Forever"/>
Наследование
RepeatBehavior
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

В этом примере показано несколько различных способов установки RepeatBehavior анимации и того, как эти параметры могут повлиять на анимацию.

<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();
}

В этом примере показано, как задать RepeatBehavior в коде . Анимации такие же, как и в предыдущем примере, но имеют атрибут x:Name , а RepeatBehavior задается в методе 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();
}

Комментарии

Существует три типа поведения RepeatBehavior:

  • Диапазон времени: указывает активную длительность временной шкалы, возможно, повторяя анимацию, если Timeline.Duration короче. Например, временная шкала с простым значением Timeline.Duration 1 секунда и значением RepeatBehavior.Duration 2,5 секунды будет выполняться в течение 2,5 итераций и 2,5 секунды.
  • Число итераций: указывает количество воспроизведения простой длительности временной шкалы . По умолчанию используется значение 1,0. Это означает, что временная шкала активна в течение одного из простых периодов. Число 0,5 указывает, что временная шкала активен в течение половины простой длительности, а число 2 указывает, что временная шкала повторяет свою простую длительность дважды. Дополнительные сведения см. в разделе Count.
  • Навсегда: временная шкала повторяется бесконечно.

RepeatBehavior должен содержать только ненулевые значения для одного из двух возможных свойств данных Count или Duration. Если RepeatBehaviorType имеет значение Count, то соответствующим значением является элемент Count объекта RepeatBehavior. Если Параметр RepeatBehaviorType имеет значение Duration, то элемент Duration элемента RepeatBehavior является соответствующим значением. Если параметр RepeatBehaviorType имеет значение Forever, то ни Count , ни Duration не имеют значения; поведение повторения таково, что целевая анимация будет повторяться непрерывно без ограничения.

Примечания по синтаксису XAML

RepeatBehavior нельзя объявить в качестве объекта, доступного для общего доступа, в ResourceDictionary.

Проекция и члены RepeatBehavior

Если вы используете язык Microsoft .NET (C# или Microsoft Visual Basic), repeatBehavior имеет доступные члены, не относящиеся к данным, а его члены данных Count, Duration и Type предоставляются как свойства чтения и записи, а не поля.

Если вы используете расширения компонентов Visual C++ (C++/CX), repeatBehavior имеет доступные члены, не относящиеся к данным, а его члены данных Count, Duration и Type предоставляются как свойства только для чтения, а не поля.

При программировании на C++ с помощью библиотеки шаблонов среда выполнения Windows (WRL) в качестве членов RepeatBehavior существуют только поля элементов данных Count, Duration и Type, и вы не сможете использовать служебные методы или свойства, перечисленные в таблице элементов. Код WRL может обращаться к аналогичным служебным методам, которые существуют в классе RepeatBehaviorHelper .

Поля

Count

Количество повторов временной шкалы .

Duration

Период времени, в течение которого должна повторяться временная шкала .

Type

Режим или тип поведения повтора, представляемый этим экземпляром, в виде значения перечисления.

Применяется к