在#String; StringAnimationUsingKeyFrames'之后,我无法更改文本块的值。

时间:2014-05-19 16:50:33

标签: c# wpf animation storyboard

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    StringAnimationUsingKeyFrames sAnimation = new StringAnimationUsingKeyFrames();
    int full = 100;
    double key = 4000 / full;

    for (var i = 100; i >= 0; i--)
    {
        TimeSpan keyTime = TimeSpan.FromMilliseconds((100 - i) * key);
        DiscreteStringKeyFrame frame = new DiscreteStringKeyFrame(i.ToString(), KeyTime.FromTimeSpan(keyTime));
        sAnimation.KeyFrames.Add(frame);
    }

    Storyboard.SetTarget(sAnimation, textCount);
    Storyboard.SetTargetProperty(sAnimation, new PropertyPath(TextBlock.TextProperty));

    Storyboard sb = new Storyboard();

    sb.Children.Add(sAnimation);
    sb.Completed += sb_Completed;
    sb.Begin(this);
}

private void sb_Completed(object sender, EventArgs e)
{
    textCount.Text = "50";
}

这是我的代码。

此代码将更改文本块的值100更改为0。

我希望在倒计时结束后更改文本块的值。

但即使倒数(动画)完成,它也不会改变。 (我在故事板完成时尝试更改文本块的值)

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您只需在上面的代码中添加一行:

sAnimation.FillBehavior = FillBehavior.Stop;

这样,动画将在故事板完成后停止影响目标控件。