我正在用户控件上编写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, ...));
}
但这种方法似乎并不存在。我怎样才能完成我想做的事?
答案 0 :(得分:0)
你的问题有点细节。例如。动画孩子应该如何对动画作出反应?裁剪?缩放?你打算如何恢复动画?另一个动画?
假设子控件被包装在容器中并且你想要一个剪切效果,我会按如下方式设置动画:
Height
动画显示为ActualHeight
。Height
设置为零。Visibility
动画为Collapsed
。