【发布时间】:2014-11-14 15:03:43
【问题描述】:
我正在尝试在可见性变为折叠之前制作动画。
我正在尝试在可见性更改时实现淡入/淡出效果。我对淡入没有问题,因为在我的动画之前可见性会发生变化(这很好)。
这是我现在的代码:
private void LoginOverlay_OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
//Fade in ... this is working
Storyboard sb = new Storyboard();
DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = 1;
da.Duration = new Duration(TimeSpan.FromSeconds(1));
sb.Children.Add(da);
Storyboard.SetTargetProperty(da, new PropertyPath(OpacityProperty));
Storyboard.SetTarget(da, this);
sb.Begin();
}
else
{
//Fade out ... not working
Storyboard sb = new Storyboard();
DoubleAnimation da = new DoubleAnimation();
da.From = 1;
da.To = 0;
da.Duration = new Duration(TimeSpan.FromSeconds(1));
sb.Children.Add(da);
Storyboard.SetTargetProperty(da, new PropertyPath(OpacityProperty));
Storyboard.SetTarget(da, this);
sb.Begin();
}
}
【问题讨论】:
-
当您的淡出动画开始时,控件将折叠/隐藏,因此您在屏幕上看不到任何动画。如果您知道何时应该隐藏/折叠控件,而不是 onVisibileChanged,则可以先运行动画,然后在情节提要的已完成事件上,您实际上可以隐藏/折叠叠加层。
-
尝试绑定可见性并在集合中进行。