直接在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
我可以正确设置 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