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 속성을 바인딩하고 기본적으로 모든 애니메이션이이 애니메이션의 영향을받습니다. 그러나 그 중 하나만 보이기 때문에 트릭을 수행합니다.
난 ViewModel에 애니메이션과 같은 뷰 관련 만 포함시키는 것이 좋습니다. MVVM은 "코드 뒤에 코드가 없음"을 의미하지 않습니다. 즉, ViewModel에 순수하게 뷰와 관련이없는 것을 넣어야 함을 의미합니다. 개인적으로 특정 유스 케이스에서 바인딩 사용을 피할 수 있습니다. – ken2k