Added DelayBehavior option to XAML animation types

This commit is contained in:
Sergio Pedri 2021-02-28 19:40:09 +01:00
Родитель 59d0b1297f
Коммит d97a7f674b
5 изменённых файлов: 27 добавлений и 2 удалений

Просмотреть файл

@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System; using System;
using Windows.UI.Composition;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Media.Animation; using Windows.UI.Xaml.Media.Animation;
@ -103,6 +104,26 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
typeof(Animation), typeof(Animation),
new PropertyMetadata(RepeatOption.Once)); new PropertyMetadata(RepeatOption.Once));
/// <summary>
/// Gets or sets the delay behavior for the animation. The default value is set to <see cref="AnimationDelayBehavior.SetInitialValueBeforeDelay"/>.
/// This value is applicable when the current animation is used as either an implicit composition animation, or an explicit composition animation.
/// If the current animation is instead running on the XAML layer (if used through <see cref="CustomAnimation{TValue, TKeyFrame}"/>), it will be ignored.
/// </summary>
public AnimationDelayBehavior DelayBehavior
{
get => (AnimationDelayBehavior)GetValue(DelayBehaviorProperty);
set => SetValue(DelayBehaviorProperty, value);
}
/// <summary>
/// Identifies the <seealso cref="DelayBehavior"/> dependency property.
/// </summary>
public static readonly DependencyProperty DelayBehaviorProperty = DependencyProperty.Register(
nameof(DelayBehavior),
typeof(AnimationDelayBehavior),
typeof(Animation),
new PropertyMetadata(AnimationDelayBehavior.SetInitialValueBeforeDelay));
/// <inheritdoc/> /// <inheritdoc/>
public abstract AnimationBuilder AppendToBuilder(AnimationBuilder builder, TimeSpan? delayHint, TimeSpan? durationHint, EasingType? easingTypeHint, EasingMode? easingModeHint); public abstract AnimationBuilder AppendToBuilder(AnimationBuilder builder, TimeSpan? delayHint, TimeSpan? durationHint, EasingType? easingTypeHint, EasingMode? easingModeHint);
} }

Просмотреть файл

@ -104,6 +104,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
delay: Delay ?? delayHint ?? DefaultDelay, delay: Delay ?? delayHint ?? DefaultDelay,
duration: Duration ?? durationHint ?? DefaultDuration, duration: Duration ?? durationHint ?? DefaultDuration,
repeatOption: Repeat, repeatOption: Repeat,
delayBehavior: DelayBehavior,
build: static (b, s) => s.This.AppendToBuilder(b, s.EasingTypeHint, s.EasingModeHint)); build: static (b, s) => s.This.AppendToBuilder(b, s.EasingTypeHint, s.EasingModeHint));
} }

Просмотреть файл

@ -42,6 +42,7 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
state: (this, easingTypeHint, easingModeHint), state: (this, easingTypeHint, easingModeHint),
delay: Delay ?? delayHint ?? DefaultDelay, delay: Delay ?? delayHint ?? DefaultDelay,
duration: Duration ?? durationHint ?? DefaultDuration, duration: Duration ?? durationHint ?? DefaultDuration,
delayBehavior: DelayBehavior,
layer: Layer, layer: Layer,
build: static (b, s) => s.This.AppendToBuilder(b, s.EasingTypeHint, s.EasingModeHint)); build: static (b, s) => s.This.AppendToBuilder(b, s.EasingTypeHint, s.EasingModeHint));
} }

Просмотреть файл

@ -29,7 +29,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
ExplicitTarget, ExplicitTarget,
Delay ?? DefaultDelay, Delay ?? DefaultDelay,
Duration ?? DefaultDuration, Duration ?? DefaultDuration,
Repeat); Repeat,
DelayBehavior);
var (to, from) = GetParsedValues(); var (to, from) = GetParsedValues();

Просмотреть файл

@ -70,7 +70,8 @@ namespace Microsoft.Toolkit.Uwp.UI.Animations
explicitTarget, explicitTarget,
Delay ?? delayHint ?? DefaultDelay, Delay ?? delayHint ?? DefaultDelay,
Duration ?? durationHint ?? DefaultDuration, Duration ?? durationHint ?? DefaultDuration,
Repeat); Repeat,
DelayBehavior);
AppendToBuilder(keyFrameBuilder, easingTypeHint, easingModeHint); AppendToBuilder(keyFrameBuilder, easingTypeHint, easingModeHint);