2013-08-12 1 views
3

내가 가진 텍스트 상자 컨트롤 템플릿을졌다 너희는이

<ControlTemplate.Triggers> 
    <EventTrigger RoutedEvent="Binding.TargetUpdated"> 
     <BeginStoryboard> 
      <Storyboard> 
       <ColorAnimationUsingKeyFrames 
        Storyboard.TargetName="Border" 
        Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"> 
        <EasingColorKeyFrame KeyTime="0:0:0.20" Value="Yellow"/> 
        <EasingColorKeyFrame KeyTime="0:0:1" Value="{Binding ElementName=Border, Path=Background.SolidColorBrush.Color}"/> 
       </ColorAnimationUsingKeyFrames> 
      </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger> 
</ControlTemplate.Triggers> 

아이디어와 같은 부분은 바인딩 할 때마다 것을되는 트리거 대상이 업데이트되면 텍스트 상자가 노란색으로 깜박입니다. 내 UI는 컨트롤 사이에 복잡한 종속성을 가지고 있으며 간단한 비주얼 큐를 통해 상황이 바뀌면 사용자에게 알림을 보내고 싶습니다.

위의 문제는 이전에 텍스트 상자의 배경색을 원래대로 설정하는 것입니다. 다시 흰색으로 움직이면 원래 색상이 아닐 수도 있습니다. 몇 가지 시각 상태, 즉 normaldisabledenabled이 있습니다.

노란색으로 깜박이고 이전에 색상으로 돌아가고 싶습니다. 내가 마지막 키 프레임의 색상을 결합하려고하지만 경우에 나는 그것이 완료 또는 동적으로 올바른 색상을 결합 후 자동으로

Cannot freeze storyboard to be used across multiple threads. 

과 같은 오류가 애니메이션의 결과를 취소 할 수있는 방법 중 하나가 있습니까거야?

+0

'Storyboard'에서 표현식 바인딩을 사용할 수 없습니다. [here] (http://msdn.microsoft.com/en-us/library/ms742868.aspx) ('Animate in Style')을 참조하십시오. 대신에 예를 들어'Background'의 이전 값을 저장할 첨부 된 종속성 속성을 사용하십시오. –

답변

3

애니메이션의 FillBehaviorStop으로 설정할 수 있습니다. 애니메이션 속성은 애니메이션이 시작되기 전의 값으로 자동으로 되돌아갑니다.

<ColorAnimationUsingKeyFrames FillBehavior="Stop" 
    Storyboard.TargetName="Border" 
    Storyboard.TargetProperty="Background.Color"> 
    ... 
</ColorAnimationUsingKeyFrames>