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. コンテナHeightActualHeight即座にアニメーション化します。
  2. 時間tにわたってコンテナHeightをゼロにアニメーション化します。
  3. コンテナーのVisibilityto をCollapsed即座にアニメーション化します。
于 2012-12-21T16:17:16.043 に答える