2012-01-13 2 views
2

내 ListBox의 항목에 애니메이션을 적용하는 데 문제가 있습니다. OpacityProperty의 애니메이션은 훌륭하게 작동하지만 내 ListBoxItem의 위치를 ​​애니메이션으로 만들려고하면 단순히 인치를 이동하지 않습니다 (예외가 발생하지 않으며 오류를 나타내는 로그 메시지조차 표시되지 않음). 디버깅하는 동안ListBoxItem 위치에 애니메이션을 적용하는 방법

private void deletAnimation() 
    { 
     Todo todoToDelete = App.ViewModel.Todos[1]; 

     Storyboard storyboard = new Storyboard(); 

     DoubleAnimation alphaAnim = new DoubleAnimation(); 
     alphaAnim.From = 1; 
     alphaAnim.To = 0; 
     alphaAnim.Duration = new Duration(TimeSpan.FromMilliseconds(500)); 
     ListBoxItem target = TodoList.ItemContainerGenerator.ContainerFromItem(todoToDelete) as ListBoxItem; 
     Storyboard.SetTarget(alphaAnim, target); 
     Storyboard.SetTargetProperty(alphaAnim, new PropertyPath(UIElement.OpacityProperty)); 

     storyboard.Children.Add(alphaAnim); 

     for (int i = App.ViewModel.Todos.IndexOf(todoToDelete) + 1; i < App.ViewModel.Todos.Count; i++) 
     { 
      Todo todo = App.ViewModel.Todos[i]; 
      target = TodoList.ItemContainerGenerator.ContainerFromItem(todo) as ListBoxItem; 

      DoubleAnimation translateAnim = new DoubleAnimation(); 
      translateAnim.From = target.RenderTransformOrigin.Y; 
      translateAnim.To = target.RenderTransformOrigin.Y - target.ActualHeight; 
      translateAnim.Duration = new Duration(TimeSpan.FromMilliseconds(500)); 
      translateAnim.BeginTime = TimeSpan.FromMilliseconds(500); 

      Storyboard.SetTarget(translateAnim, target); 
      Storyboard.SetTargetProperty(translateAnim, new PropertyPath(TranslateTransform.YProperty)); 

      storyboard.Children.Add(translateAnim); 
     } 

     storyboard.Begin(); 
    } 

어떤 일이 내가이 발견했습니다 :

  1. RenderTransformOrigin.Y 속성에 상관없이 ListBoxItem의이 참조되는 항상 0입니다 여기에

    내가 사용하고있는 코드입니다. 의 ActualHeight 속성은 ListBoxItem의의 부모의 속성이 null 67
  2. 비록
  3. 높이 속성이 NaN의

이 두 가지 내가 렌더링되지 않은 ListBoxItem의에 대한 참조를 받았을 경우에는 나를 궁금하게 화면의? 하지만 불투명도 애니메이션이 완벽하게 작동하고 모든 목록이 표시되기 때문에 (현재 3 개 항목 만 포함) 나는 이것이 어떻게 될 수 있는지 보지 못합니다.

나는 또한 PointAnimation을 사용하고 RenderTransformOrigin 속성을 직접 애니메이션으로 만들려고했으나 동일한 결과가 나타났습니다.

도움 주시면 감사하겠습니다.

+0

달성하려는 효과는 무엇입니까? –

+0

목록에서 항목을 삭제할 때 해당 항목이 희미 해지고 그 아래의 모든 항목이 위로 이동합니다. –

+0

xaml에있을 수 있습니까? 불행히도 저는 Xaml로 스토리 보드와 FluidMoveBehavior를 사용하여 어떻게하면 효과가 있는지 생각할 수 있습니다. –

답변

관련 문제