Skip to content


ControlStoryboardAction in Silverlight 3

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Microsoft.Expression.Interactions namespace ships with an interesting control – ControlStoryBoardAction.  This control can be applied on any Silverlight UI Control that has Content property. What does it do?

Well, it allows us to add Animation/Movement Behavior to any control. Let us see how.

Let us implement a swivel effect to an image on a page. Steps to implement this:

  • Add an image to the Page.xaml -> say the image name is x:Name=”image”
  • Drag and drop the ControlStoryBoardAction from the toolbox on the image.
    The new XAML appears like:
    </div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><Image x:Name="image" Height="155" HorizontalAlignment="Left"</div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">VerticalAlignment="Top" Width="240"</div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">RenderTransformOrigin="0.5,0.5" Source="bs00554_.jpg"></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><i:Interaction.Triggers></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><i:EventTrigger EventName="Loaded"></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><im:ControlStoryboardAction Storyboard="{StaticResource</div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">MoveAnimation}"/></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"></i:EventTrigger></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"></i:Interaction.Triggers></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><Image.RenderTransform></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><TransformGroup></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><ScaleTransform/></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><SkewTransform/></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><RotateTransform/></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><TranslateTransform/></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"></TransformGroup></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"></Image.RenderTransform></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"></Image></div>
    <div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
    <Image x:Name="image" Height="155" HorizontalAlignment="Left"
                     VerticalAlignment="Top" Width="240"
                     RenderTransformOrigin="0.5,0.5" Source="bs00554_.jpg">
       <i:Interaction.Triggers>
           <i:EventTrigger EventName="Loaded">
                 <im:ControlStoryboardAction Storyboard="{StaticResource
                        MoveAnimation}"/>
            </i:EventTrigger>
      </i:Interaction.Triggers>
      <Image.RenderTransform>
          <TransformGroup>
           <ScaleTransform/>
           <SkewTransform/>
           <RotateTransform/>
           <TranslateTransform/>
        </TransformGroup>
    </Image.RenderTransform>
    </Image>
    
    This ControlStoryBoardAction refers to a StaticResource MoveAnimation
  • Add an Animation for this image in this StoryBoard and press F5
  • Whoa! The image animates!

How does this work?

There are 2 parts to understand

  • EventTrigger: This is the function that triggers this ControlStoryboardAction
  • StoryBoard: The animation which should be displayed when the above event is triggered.

It is this simple :)


Related Posts:

Posted in Microsoft .NET, Silverlight.

Tagged with .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.