2011-10-18 13 views
3

私がやりたいことは、リソースを使ってアニメーションのBeginTimesをすべて定義することです。WPFアニメーションセットのプロパティBeginTimeを静的リソース

は例えば、私がしたい:

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

... 

<DoubleAnimation BeginTime={StaticResource SomeResource}/> 

を明らかにSYS:のTimeSpanが使用する正しいタイプではありません。私のアニメーションを定義する際にリソースとして参照できるように、私のリソースをどのように定義すればよいですか?

これも純粋にXAMLで行いたいと思います。

ありがとうございました。

答えて

3

System.TimeSpanは、タイプがBeginTimeであるため使用する正しいタイプです。 Durationでも同様の操作を行うことができます(代わりにタイプを使用)。ここで

(2秒後、1秒間フェードイン)アニメーションでStaticResourceを使用した例です。

<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

関連する問題