2012-12-21 28 views
1

我正在用戶控件上編寫WPF動畫。控件的高度沒有明確設置;它取決於哪些子控件可見。我正在執行動畫,以便在隱藏某些子控件時平滑地降低用戶控件的高度。如何預測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

你的問題是有點細節。例如。動畫小孩應該如何對動畫做出反應?剪裁?縮放?你將如何恢復動畫?另一個動畫?

假設子控件被包裝在一個容器中,你想要一個剪輯的效果,我將動畫如下:

  1. 動畫容器的HeightActualHeight瞬間。
  2. 將容器的Height動畫化爲隨着時間的推移而變爲零t
  3. 瞬間將容器的Visibility動畫爲Collapsed
相關問題