如何更改子控件时如何预测WPF控件的高度

时间:2012-12-21 13:00:14

标签: wpf animation

我正在用户控件上编写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, ...));
}

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

1 个答案:

答案 0 :(得分:0)

你的问题有点细节。例如。动画孩子应该如何对动画作出反应?裁剪?缩放?你打算如何恢复动画?另一个动画?

假设子控件被包装在容器中并且你想要一个剪切效果,我会按如下方式设置动画:

  1. 立即将容器的Height动画显示为ActualHeight
  2. 随着时间 t 将容器的Height设置为零。
  3. 立即将容器的Visibility动画为Collapsed