如何使用 UWP 社区工具包为 "slide in" 制作动画?

How do you animate a "slide in" using the UWP Community Toolkit?

根据 Offset 动画文档:

https://docs.microsoft.com/en-us/windows/uwpcommunitytoolkit/animations/offset

您只需为您的元素设置一个偏移值,它就会滑动到目标值:

<interactivity:Interaction.Behaviors>
    <behaviors:Offset x:Name="OffsetBehavior" 
            OffsetX="25.0" 
            OffsetY="25.0"
            Duration="2500" 
            Delay="250" 
            AutomaticallyStart="True"/>
</interactivity:Interaction.Behaviors>

但是,没有 FromTo 的概念,因此您如何获得元素 滑动 进入视图(例如:Offset.X 将是 -100 到 0)???我们只能设置Value,代表合成动画中的"To"

没有 From 值,因为对于此行为,From 是相对于行为分配给的元素的 0,0。您可以为元素分配一个边距,将其放在一边并使用该行为。

<Image Margin="-50,0,0,0">
    <interactivity:Interaction.Behaviors>
        <behaviors:Offset x:Name="OffsetBehavior" 
                OffsetX="25.0" 
                Duration="2500" 
                Delay="250" 
                AutomaticallyStart="True"/>
    </interactivity:Interaction.Behaviors>
</Image>

或者,您可以直接使用具有 From 和 To 的动画

var animation = compositor.CreateVector3KeyFrameAnimation();
animation.Duration = TimeSpan.FromMilliseconds(duration);
animation.DelayTime = TimeSpan.FromMilliseconds(delay);
animation.InsertKeyFrame(0f, new Vector3(-100,0,0));
animation.InsertKeyFrame(1f, new Vector3(0,0,0));
animationSet.AddCompositionAnimation("Offset", animation);

终于发现实际上可以使用 UWP 社区工具包动画:

this.MyElement.Offset(-200, duration: 0).Fade(0, duration: 0)
    .Then()
    .Offset(0).Fade(1)
    .Start();

我假设 Xaml 的解决方案相同,诀窍是将初始值的持续时间设置为 0,然后使用另一个动画来实现实际预期的 "slide-in" 效果。