在点击事件上反转故事板的动画

时间:2016-11-22 08:39:16

标签: c# asp.net wpf storyboard

我有一个范围控件,其动作序列包含在故事板中。我创建了一个移动序列,但我想在用户单击反向按钮时反转动画。我也有一个暂停按钮,它可以正常工作。

Screenshot of control

播放按钮代码:

    listArrayFromJSON = getArrayJSON(); //get JSON with GSON request
    mItems.addAll(ListArrayFromJSON,header); //not add`

暂停按钮代码:

public void Animate(DateTime endDate)
{
    previousMaxValue = (DateTime)rangeControl.SelectionRangeEnd;
    previousMinValue = (DateTime)rangeControl.SelectionRangeStart;
    double toValue = (endDate - previousMaxValue).TotalSeconds;
    TimeSpan sp = TimeSpan.FromSeconds(diffInSeconds);
    animation = new DoubleAnimation(0, toValue, new Duration(sp));

    storyboard.Children.Clear();
    storyboard.Children.Add(animation);
    storyboard.AutoReverse = true;
    Storyboard.SetTarget(animation, this);
    Storyboard.SetTargetProperty(animation, new PropertyPath(AxisRangeAnimator.ValueProperty));
    storyboard.Begin();
}

我正在尝试设置反向按钮。属性public void Pause() { storyboard.Pause(); } 使得动画在结束时反向运行,但是当用户在动画所在的位置单击按钮时,我希望实现此效果。

1 个答案:

答案 0 :(得分:0)

方法StoryBoard.Seek在下一个时钟滴答发生时将故事板寻找到新位置。

public void Reverse()
{
    TimeSpan CurrentTime = (TimeSpan)storyboard.GetCurrentTime();
    TimeSpan sp = TimeSpan.FromSeconds(diffInSeconds);
    TimeSpan SubtractTime = sp.Subtract(CurrentTime);
    storyboard.Seek(SubtractTime, TimeSeekOrigin.Duration);
}