1

我正在用户控件上编写 WPF 动画。控件的高度没有明确设置;它取决于哪些子控件可见。当某些子控件被隐藏时,我正在执行动画以平滑地降低用户控件的高度。

但是,我不知道动画的结束高度。我需要测量高度是多少,是否隐藏了子控件,但在执行动画之前我无法更改控件的外观。理想情况下,我想要一个可以像这样使用的“FreezeDisplay”方法:

public void HideSomeControls()
{        
    double targetHeight;
    using (this.FreezeDisplay())
    {
        Control1.Visibility = Visibility.Hidden;
        Control2.Visibility = Visibility.Hidden;
        Control3.Visibility = Visibility.Visible;

        targetHeight = this.ActualHeight;
    }

    this.BeginAnimation(HeightProperty, new DoubleAnimation(ActualHeight, targetHeight, ...));
}

但这种方法似乎不存在。我怎样才能完成我想做的事情?

4

1 回答 1

0

你的问题在细节上有点轻。例如。动画孩子应该如何对动画做出反应?剪裁?缩放?你打算如何还原动画?又一部动画?

假设子控件被包装在一个容器中并且您想要一个剪辑效果,我将动画如下:

  1. 立即为容器Height设置动画ActualHeight
  2. Height随着时间t将容器的动画设置为零。
  3. 立即为容器Visibility设置动画Collapsed
于 2012-12-21T16:17:16.043 回答