我最近开始学习C#wpf。我想知道我们可以为多个目标使用相同的故事板。我知道这可以通过XAML实现,但我不知道如何通过c#代码实现它。我正在做的事情就像故事板开始动画然后0-2秒一个元素完成动画然后从2-4秒持续时间另一个元素做动画。通过这种方式,故事板的总持续时间为4秒。 下面是我在网上找到的XAML代码,我想在c#code
中做这样的事情<Storyboard x:Name=”sbFlip“>
<DoubleAnimationUsingKeyFrames BeginTime=”00:00:00” Storyboard.TargetName=”front” Storyboard.TargetProperty=”(UIElement.RenderTransform).(ScaleTransform.ScaleX)“>
<SplineDoubleKeyFrame KeyTime=”00:00:00.2” Value=”0“/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime=”00:00:00.2” Storyboard.TargetName=”back” Storyboard.TargetProperty=”(UIElement.RenderTransform).(ScaleTransform.ScaleX)“>
<SplineDoubleKeyFrame KeyTime=”00:00:00.4” Value=”1“/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
答案 0 :(得分:0)
让这些是视图中的三个对象:
<Rectangle x:Name="rctMovingObject1" Fill="LimeGreen" Width="50" Height="50"/>
<Rectangle x:Name="rctMovingObject2" Fill="Red" Width="50" Height="50" Canvas.Top="136"/>
<Rectangle x:Name="rctMovingObject3" Fill="Purple" Width="50" Height="50" Canvas.Top="69"/>
您可以从后端定义动画,并按如下方式分配给所有动画:
var anim = new DoubleAnimation
{
From = 1920,
To = 1,
Duration =new Duration(new TimeSpan(0,0,2))// a duration of 2 seconds
};
rctMovingObject1.BeginAnimation(Canvas.LeftProperty, anim);
rctMovingObject2.BeginAnimation(Canvas.LeftProperty, anim);
rctMovingObject3.BeginAnimation(Canvas.LeftProperty, anim);