ユーザー コントロールで 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, ...));
}
しかし、その方法はないようです。どうすればやりたいことを達成できますか?