2011-01-18 3 views
8

나는 눌러 진 상태 일 때 조화롭게 뛰고 싶은 몇 개의 토글 모양 버튼이 있습니다.여러 컨트롤간에 WPF ColorAnimation을 동기화합니다.

나는 각 애니메이션이 다른 애니메이션과 비동기 적으로 맥동한다는 점을 제외하고 글로우 애니메이션을 시작하는 스타일을 정의했다.

어떻게 각 버튼을 다른 버튼과 동기화시킬 수 있습니까?

<Storyboard x:Key="pulseStory"> 
    <ColorAnimation                  
     Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)" 
        From="Red" 
        To="Transparent" 
        Duration="0:0:1" /> 
</Storyboard> 

<Style x:Key="pulseButton" TargetType="Button"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Tag,RelativeSource={RelativeSource Self}}" Value="True"> 
      <DataTrigger.EnterActions> 
       <BeginStoryboard Storyboard="{StaticResource pulseStory}"/> 
      </DataTrigger.EnterActions> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

건배 :

여기 스타일입니다!

답변

4

OK ... 당신이 와서해야 할 것, 그래서 나는 WPF 프레임 워크는 동시에 실행중인 애니메이션을 동기화하기위한 모든 시설이없는

...이 하나 자상 할게요 다른 방법으로 하나의 아이디어가 마음에 떠오 릅니다 ...

스토리 보드에서 숨겨진 UI 요소의 일부 색상 속성에 애니메이션을 적용한 다음 UI 바인딩 (예 : ElementName 바인딩)을 사용하여 각 버튼의 색상을이 숨겨진 UI 요소에 연결합니다.

+1

그게 내가 취한 길입니다 .- 위대한 마음 ... :) –

+0

차가워 요 - 걸리는 시간은 17 시간이며 자신의 질문에 대답 할 수 있습니다 ;-) 나는 다음 번에 좀 더 빠르게하려고 노력할 것입니다! – ColinE

1

사실 당신은 최소한 숨겨진 컨트롤을 사용하여 개인적으로 나에게 너무 많은 해킹을하는 것이므로 리소스를 통해이를 수행해야합니다. 당신이 필요로 결합

  1. 속성은 DependencyProperty에로, 따라서 당신의 포위 객체가 DependencyObject에 있어야합니다 : 그것은 작동하려면 필요가 무엇

    이 충족되어야합니다.

  2. 당신은 이런 식으로 (동적 리소스에 반대) 정적 자원으로 객체를 참조 할 필요 :
<DoubleAnimation 
    Storyboard.Target="{StaticResource AnimationValue}" 
    Storyboard.TargetProperty="(local:WrappedValue.Value)" 
    To="0" Duration="0:0:1"/> 

음이 인정 하듯이 이것에 대한 래퍼 클래스를 가질뿐만 아니라 해키 조금입니다 만 그것은 모든 컨트롤보다 깔끔합니다 (콘트롤을 사용하고 싶다면 콘트롤을 호스트하는 컨테이너와 같이 사용하지 않은 Tag 속성을 활용할 수 있습니다)

+0

이것에 대해 생각해 보지 마세요. –

관련 문제