RepeatBehavior 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
/// [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"/>
- 继承
-
RepeatBehavior
- 属性
示例
此示例演示设置动画的 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,则 RepeatBehavior 的 Count 成员是相关值。 如果 RepeatBehaviorType 为 Duration,则 RepeatBehavior 的 Duration 成员是相关值。 如果 RepeatBehaviorType 为 Forever,则 Count 和 Duration 都不相关;重复行为使目标动画连续重复,没有限制。
有关 XAML 语法的说明
不能在 ResourceDictionary 中将 RepeatBehavior 声明为可共享对象。
RepeatBehavior 的投影和成员
如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) ,则 RepeatBehavior 具有可用的非数据成员,并且其数据成员 Count、 Duration 和 Type 公开为读写属性,而不是字段。
如果使用 Visual C++ 组件扩展 (C++/CX) ,则 RepeatBehavior 具有可用的非数据成员,并且其数据成员 Count、 Duration 和 Type 公开为只读属性,而不是字段。
如果使用 Windows 运行时 模板库 (WRL) 使用 C++ 进行编程,则只有数据成员字段 Count、Duration 和 Type 作为 RepeatBehavior 的成员存在,并且不能使用成员表中列出的实用工具方法或属性。 WRL 代码可以访问 RepeatBehaviorHelper 类上存在的类似实用工具方法。
字段
Count |
时间线应重复的次数。 |
Duration |
时间线应重复的时间跨度。 |
Type |
此实例表示的重复行为的模式或类型,作为 枚举的值。 |