wpf做动画,直到后台工作人员完成其工作

时间:2010-03-19 22:36:41

标签: wpf animation backgroundworker complete

我有一个应用程序,当用户单击开始按钮并花费很长时间时会做一些困难的事情。在此期间,我想在标签上做一些动画,例如,将不透明度从0更改为1,反之亦然,并在改变不透明度的同时更改几种颜色之间的前景色。我希望它在后台工作人员完成其工作时停止动画。我怎样才能做到这一点?如何从c#开始动画并停止播放?

非常感谢!

1 个答案:

答案 0 :(得分:2)

您的动画将托管在故事板中。

  • 要使动画无限期运行,请将Storyboard的RepeatBehavior设置为Forever。
  • 要在启动BackgroundWorker时启动动画,请调用Storyboard.Begin方法。
  • 要在BackgroundWorker完成时停止动画,请在RunWorkerCompleted事件处理程序中调用Storyboard.Stop方法。

以下是一个例子:

<Window.Resources>
  <Storyboard x:Key="sb" Duration="0:0:2" RepeatBehavior="Forever">
    <DoubleAnimation Storyboard.TargetName="l"
                     Storyboard.TargetProperty="Opacity"
                     From="1" To="0" AutoReverse="True" />
    <ColorAnimation Storyboard.TargetName="l"
                    Storyboard.TargetProperty="Foreground.Color"
                    From="HotPink" To="Lime" AutoReverse="True" />
  </Storyboard>
</Window.Resources>

<StackPanel>
  <Label Name="l" FontSize="72">Oh noes!</Label>
  <Button Click="Button_Click">Animate me!</Button>
</StackPanel>

Button_Click处理程序:

private void Button_Click(object sender, RoutedEventArgs e)
{
  ((Storyboard)(FindResource("sb"))).Begin();
  // and kick off your BackgroundWorker
}