直接在Control which Storyboard Animation already set上设置Opacity

Set Opacity directly on Control which Storyboard Animation already set

我可以正确设置 UserControl 不透明度 属性,但绑定到 Storyboard 后就不行了。

UserControl MyControl;
MyControl.Opacity = 0.8;   /// This works before animation set

Storyboard sb = new Storyboard();
DoubleAnimation opacity = new DoubleAnimation();
opacity.From = 1;
opacity.To = 0;
opacity.Duration = TimeSpan.FromMilliseconds(400);
Storyboard.SetTarget(opacity, MyControl);
Storyboard.SetTargetProperty(opacity, new PropertyPath(UserControl.OpacityProperty));
sb.Children.Add(opacity);
sb.Begin();

sb.Completed += (object sender, EventArgs e) => {
  MyControl.Opacity = 0.5;   /// This doesn't work anymore
}

如何在 Storyboard 完成后运行?

在某些情况下,您可能无法在 属性 设置动画后更改它的值。 你可以试试:

sb.Completed += (object sender, EventArgs e) => {
 sb.Remove(MyControl);
  MyControl.Opacity = 0.5;
}

原因说明How to: Set a Property After Animating It with a Storyboard