2012-12-21 2 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. 이 컨테이너의 Height으로 즉시 ActualHeight에 애니메이션.
  2. 시간이 지남에 따라 컨테이너 Height에 0이 붙는 것으로 표현하십시오. t.
  3. 즉시 컨테이너의 VisibilityCollapsed에 애니메이트하십시오.
관련 문제