2011-10-18 2 views
3

내가 원하는 것은 리소스를 사용하여 애니메이션의 모든 BeginTimes를 정의하는 것입니다.WPF 애니메이션에서 BeginTime을 정적 리소스로 설정

예를 들어, 내가 원하는 :

<sys:TimeSpan x:key="SomeResource">... </sys:TimeSpan> 

... 

<DoubleAnimation BeginTime={StaticResource SomeResource}/> 

을 분명히 SYS : 시간 범위는 사용할 올바른 형식이 아닙니다. 내 리소스를 정의하여 내 애니메이션을 정의 할 때 리소스로 참조 할 수 있도록하려면 어떻게 정의합니까?

또한이 작업을 XAML에서 수행하려고합니다.

감사합니다.

답변

3

System.TimeSpanBeginTime 유형이므로 올바른 유형입니다. Duration에 대해서도 동일한 작업을 수행 할 수 있습니다 (대신 System.Windows.Duration 유형 사용). 여기

이 애니메이션에서 StaticResource 사용 예 (2 초 후, 1 초 페이드)

<Button Content="Placeholder" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Opacity="0.5"> 
     <Button.Resources> 
      <sys:TimeSpan x:Key="FadeInBeginTime">0:0:2</sys:TimeSpan> 
      <Duration x:Key="FadeInDuration">0:0:1</Duration> 
     </Button.Resources> 
     <Button.Style> 
      <Style> 
       <Style.Triggers> 
        <EventTrigger RoutedEvent="UIElement.MouseEnter"> 
         <BeginStoryboard x:Name="FadeInBeginStoryBoard"> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Opacity" 
               To="1" 
               BeginTime="{StaticResource FadeInBeginTime}" 
               Duration="{StaticResource FadeInDuration}" /> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
        <EventTrigger RoutedEvent="UIElement.MouseLeave"> 
         <StopStoryboard BeginStoryboardName="FadeInBeginStoryBoard" /> 
        </EventTrigger> 
       </Style.Triggers> 
      </Style> 
     </Button.Style> 
    </Button> 

을하면 sys 네임 스페이스 선언 가정하면

xmlns:sys="clr-namespace:System;assembly=mscorlib" 

희망 이게 도움이됩니다!

+0

System.TimeSpan이 실제로 작동합니다. 대답 해 주셔서 대단히 감사합니다. 나는 정확한 타입을 찾기 위해 고심하고 있었고, TimeSpan을 일찍 시도했을 때 어리석은 짓을 했음에 틀림 없다. – George

+2

이것은 Silverlight에서 작동하지 않습니다. 분명히 ... 네이티브 예외를 제공합니다. – McGarnagle

관련 문제