2012-07-13 1 views
0

MVVM을 사용하기 때문에 애니메이션을 트리거하는 버튼이 필요한 상황이 발생했습니다. 그래서 내가 설정하고 그것을 위해 EventTrigger 그리고이 애니메이션을 실행합니다바운드 애니메이션이 두 번 이상 재생됩니다.

<DoubleAnimation 
    (...) 
    From="{Binding ElementName=Browser, Path=DataContext.TooltipPosition}" 
To="150"/> 

문제는 내가 그 애니메이션이 한 번 이상 연주하지 않을 것입니다. 따라서 첫 번째 버튼을 누른 후에는 0에서 150까지 이동해야하며 이어지는 모든 클릭에 대해서는 보이지 않아야하므로 150에서 150으로 가야합니다.
내 ViewModel에 TooltipPosition 속성이 0으로 설정되어 있습니다. 이 속성을 150으로 설정하고 호출하는 버튼에 대한 명령입니다.

PropertyChanged(this, new PropertyChangedEventArgs("TooltipPosition"). 

두 번째 클릭 후이 속성이 변경되어이 애니메이션이 두 번 재생되는 것을 볼 수 있습니다.

어떻게 해결할 수 있습니까?

그래, 미안 해요 모든 정보를 포함하지 않았다 -edit-

. 하나의 객체 만 표시되도록 많은 객체에 애니메이션을 적용하려고합니다. 따라서 사용자가 GUI에서 객체의 선택을 변경하면 애니메이션은 0에서 150까지 다시 시작해야합니다. 그리고 분명히 요소 A가 움직 였다면, B, 그리고 다시 A이면,이 애니메이션은 보이지 않을 것입니다.

-edit2-0

나는 TextBlock의 너비를 움직입니다. 것은 (바인딩 데이터) 여러 TextBlocks 있고 하나만 또는 언제든지 볼 수 있어야합니다. 그래서 모든 TextBlock의 Width 속성을 바인딩하고 기본적으로 모든 애니메이션이이 애니메이션의 영향을받습니다. 그러나 그 중 하나만 보이기 때문에 트릭을 수행합니다.

+1

난 ViewModel에 애니메이션과 같은 뷰 관련 만 포함시키는 것이 좋습니다. MVVM은 "코드 뒤에 코드가 없음"을 의미하지 않습니다. 즉, ViewModel에 순수하게 뷰와 관련이없는 것을 넣어야 함을 의미합니다. 개인적으로 특정 유스 케이스에서 바인딩 사용을 피할 수 있습니다. – ken2k

답변

0

From 값을 생략 할 수 있습니다.

설명을 참조하십시오 DoubleAnimation.To 섹션 애니메이션은 애니메이션 속성의 기본 값 또는 속성에 의해 지정된 값에 대한 이전 애니메이션의 출력 값에서 진행

+0

예, 죄송 합니다만 모든 정보를 포함하지 않았습니다. 내가 볼 수있는 개체 중 하나를 사용하여 많은 개체에 애니메이션을 적용하려고합니다. 따라서 사용자가 GUI에서 객체의 선택을 변경하면 애니메이션은 다시 0에서 150까지 시작해야합니다. 그리고 분명히 요소 A가 움직 였다면, B, 그리고 다시 A이면,이 애니메이션은 보이지 않을 것입니다. – jacek11

+0

당신은 무엇을 움직이게합니까? 객체 A와 B의 속성이라면 애니메이션의 'To'값만 설정하면됩니다. – Clemens

+0

TextBlock의 너비를 움직입니다. 것은 (바인딩 데이터) 여러 TextBlocks 있고 하나만 또는 언제든지 볼 수 있어야합니다. 그래서 모든 TextBlock의 Width 속성을 바인딩하고 기본적으로 모든 애니메이션이이 애니메이션의 영향을받습니다. 그러나 그 중 하나만 보이기 때문에 트릭을 수행합니다. – jacek11