Page view counter

Did You Know... That You Can Create A Timer Using XAML Animation?

To do so, create a Storyboard and mark that you will handle the Completed event.

<Storyboard Completed="OnTimerCompleted">

Put in the simplest Animation you can manage (name it, so that you can set the duration programmatically).

<DoubleAnimation x:Name="TimerDuration"

make sure you give it a duration, and point it at the simplest object you can create.

Duration="00:00:01.00" 
Storyboard.TargetName="MyRect"
Storyboard.TargetProperty="Height"

When the duration expires you can take action and, if you wish, reset the timer.

function OnTimerCompleted...

Here's a complete sample...

<Canvas xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    <Canvas.Resources>
        <Storyboard 
            x:Name="myTimer" 
            Completed="OnTimerCompleted">
            <DoubleAnimation x:Name="TimerDuration"
                Duration="00:00:01.00" 
                Storyboard.TargetName="MyRect"
                Storyboard.TargetProperty="Height" />
        </Storyboard>
    </Canvas.Resources>

    <Canvas>
        <Rectangle x:Name="MyRect"/>
    </Canvas>

</Canvas>

Here's the javascript...

MyDemo.Scene.prototype =
{
    handleLoad: function(plugIn, userContext, rootElement) 
    {
        // set the timer duration
        timer = plugIn.content.findName("TimerDuration"); 
        timer.Duration="00:00:05.00";
        
        // start the timer
        myStoryboard = plugIn.content.findName("myTimer"); 
        myStoryboard.begin();
    }
}

function OnTimerCompleted(sender, args)
{
       alert ("Timer completed!");
       myStoryboard = sender.findName("myTimer");
       myStoryboard.begin();  //restart timer
}
Published 09 December 2007 04:39 PM by jesseliberty

Comments

# Did You Know... That You Can Create A Timer Using XAML Animation? - Jesse Liberty - Silverlight Geek said on 09 December, 2007 04:56 PM

Pingback from  Did You Know... That You Can Create A Timer Using XAML Animation? - Jesse Liberty - Silverlight Geek

# Bill Reiss said on 09 December, 2007 06:05 PM

FYI...you can put the Duration on the Storyboard and not even have a dummy DoubleAnimation child node.

# Test said on 09 December, 2007 06:22 PM

To do so, create a Storyboard and mark that you will handle the Completed event. &lt;Storyboard Completed=&quot;OnTimerCompleted&quot;&gt;

# gjhdigital said on 09 December, 2007 08:37 PM

how can I take the seconds value and update a textblock with the current second on each passing second?

# jesseliberty said on 09 December, 2007 09:07 PM

Much Simpler!! Thank you Bill Reiss....

Here's the much simplified code:

<Canvas xmlns="schemas.microsoft.com/.../2007" xmlns:x="schemas.microsoft.com/.../xaml">

   <Canvas.Resources>

       <Storyboard x:Name="myTimer" Completed="OnTimerCompleted" Duration="00:00:01.00" />

   </Canvas.Resources>

</Canvas>

The Javascript then becomes...

MyDemo.Scene.prototype =

{

  handleLoad: function(plugIn, userContext, rootElement)

 {

   // set the timer duration

   timer = plugIn.content.findName("myTimer");

   timer.Duration="00:00:05.00";

   timer.begin();

   }

 }

function OnTimerCompleted(sender, args)

{

 alert ("Timer completed!");

 myStoryboard = sender.findName("myTimer");

 myStoryboard.begin();

}

# Frank La Vigne said on 10 December, 2007 10:56 AM
# Frank La Vigne said on 11 December, 2007 06:41 AM
# Thoughts on Silverlight » BIT-101 Blog said on 11 December, 2007 06:30 PM

Pingback from  Thoughts on Silverlight &raquo; BIT-101 Blog

# Community Blogs said on 12 December, 2007 12:30 AM

First of two-parts of Cream I&#39;ve found in my blog-reading: Koen of FirsFloor demonstrates a Slideshow

# said on 16 March, 2008 03:59 AM

A Customer who asked if a quiz-type application can be enabled by Silverlight. The answer is yes (obviously