我正在用户控件上编写 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, ...));
}
但这种方法似乎不存在。我怎样才能完成我想做的事情?