There is an article Creating a Clock with Silverlight which describes how to create Silverlight clock. Following those steps and with a few changes, clock can be made to work with timer instead of Storyboard Animation.
Demo
Create clock hands and their shadow in Page.xaml
<Canvas Width="126.667" Height="126.667" x:Name="Time">
<Canvas Width="126.667" Height="126.667" x:Name="Hour" RenderTransformOrigin="0.5,0.5">
<Canvas.RenderTransform>
<RotateTransform Angle="0" x:Name="HourAngle" />
</Canvas.RenderTransform>
<Rectangle Width="1.833" Height="40" RadiusX="1" RadiusY="1" Canvas.Top="30.001" Canvas.Left="62.413" RenderTransformOrigin="0.5,0.5" Stroke="#7F434343" StrokeThickness="0.2">
<Rectangle.Fill>
<RadialGradientBrush>
<GradientStop Color="#FF4F4F4F" Offset="1"/>
<GradientStop Color="#FF120F0F" Offset="0"/>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
<Canvas Width="126.667" Height="126.667" RenderTransformOrigin="0.508,0.508" x:Name="HourShadow">
<Canvas.RenderTransform>
<RotateTransform Angle="0" x:Name="HourShadowAngle" />
</Canvas.RenderTransform>
<Rectangle Width="2.25" Height="40" RadiusX="1" RadiusY="1" Canvas.Top="31" Canvas.Left="63.205" StrokeThickness="0.2">
<Rectangle.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#004F4F4F" Offset="1"/>
<GradientStop Color="#88120F0F" Offset="0.02"/>
<GradientStop Color="#88120F0F" Offset="0.98"/>
<GradientStop Color="#004F4F4F" Offset="0"/>
</LinearGradientBrush>
</Rectangle.OpacityMask>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#004F4F4F" Offset="1"/>
<GradientStop Color="#99120F0F" Offset="0.4"/>
<GradientStop Color="#99120F0F" Offset="0.6"/>
<GradientStop Color="#004F4F4F" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
<Canvas Width="126.667" Height="126.667" x:Name="Minute" RenderTransformOrigin="0.5,0.5">
<Canvas.RenderTransform>
<RotateTransform Angle="0" x:Name="MinuteAngle" />
</Canvas.RenderTransform>
<Rectangle Width="1.083" Height="60.666" RadiusX="1" RadiusY="1" Canvas.Top="14.095" Canvas.Left="62.788" RenderTransformOrigin="0.5,0.5" Stroke="#7F434343" StrokeThickness="0.2">
<Rectangle.Fill>
<RadialGradientBrush>
<GradientStop Color="#FF4F4F4F" Offset="1"/>
<GradientStop Color="#FF120F0F" Offset="0"/>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
<Canvas Width="126.667" Height="126.667" RenderTransformOrigin="0.508,0.508" x:Name="MinuteShadow">
<Canvas.RenderTransform>
<RotateTransform Angle="0" x:Name="MinuteShadowAngle" />
</Canvas.RenderTransform>
<Rectangle Width="1.75" Height="60.666" RadiusX="1" RadiusY="1" Canvas.Top="15.345" Canvas.Left="64.038" StrokeThickness="0.2">
<Rectangle.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#004F4F4F" Offset="1"/>
<GradientStop Color="#88120F0F" Offset="0.02"/>
<GradientStop Color="#88120F0F" Offset="0.98"/>
<GradientStop Color="#004F4F4F" Offset="0"/>
</LinearGradientBrush>
</Rectangle.OpacityMask>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#004F4F4F" Offset="1"/>
<GradientStop Color="#99120F0F" Offset="0.4"/>
<GradientStop Color="#99120F0F" Offset="0.6"/>
<GradientStop Color="#004F4F4F" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>

Catalin MicleaPosted Apr 11, 2012, 6:28 AM
Thanks alot, Tomar, this really helped me! And it works great! ;)
Mike GoldPosted Aug 17, 2008, 1:36 PM
You may want to mention that you need to include using System.Windows.Threading;
Mike GoldPosted Aug 17, 2008, 1:36 PM
You may want to mention that you need to include using System.Windows.Threading;