【问题标题】:WPF Animation set back to original size and location, but invisibleWPF 动画设置回原始大小和位置,但不可见
【发布时间】:2014-04-16 19:42:54
【问题描述】:

我正在使用 DoubleAnimations 为控件的大小和位置设置动画。这是我想要实现的目标:

我希望控件动画到新的位置和大小。我想要的最终状态是让控件回到原来的位置,但我希望它们在那时不可见。 (这是因为应用程序会在使控件再次可见之前对控件的外观进行更改。它们稍后会重新出现,看起来不同,然后再次动画。)

如果我将 FillBehavior 设置为 FillBehavior.Stop,它们确实会回到原来的位置和大小,但它们会立即在原来的位置再次可见。我尝试执行以下操作:

        ObjectToMove.BeginAnimation(HeightProperty, heightAnim);
        ObjectToMove.BeginAnimation(WidthProperty, widthAnim);
        trans.BeginAnimation(TranslateTransform.YProperty, anim1);
        trans.BeginAnimation(TranslateTransform.XProperty, anim2);
        ObjectToMove.Visibility = Visibility.Hidden;

但是,这会阻止动画可见。我相信这是因为在动画完成之前控件是不可见的。

我能做什么?

【问题讨论】:

  • 您可以在动画的Completed 事件之一中将控件的可见性设置为隐藏。

标签: c# wpf animation


【解决方案1】:

您可能需要另一个将控件恢复到其原始位置和大小后将Visibility 更改为HiddenCollapsed 的动画,然后再将另一个将Visibility 更改回Visible 的动画当您完成修改控件的外观时开始。

【讨论】:

  • 这是一个绝妙的主意!效果很好!实际上,我改为将 Opacity 属性从 1 设置为 0,因为我不确定如何为这样的枚举值设置动画,但这很好,因为控件现在淡出,看起来不错。我遇到的一个问题是我无法手动将不透明度设置回 1,除非我先将其设置回 null。
猜你喜欢
  • 2015-12-16
  • 2014-02-24
  • 2011-04-20
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多