Splash Screen in Silverlight 3 Application

Introduction

In this article we will discuss about the Splash Screen in Silverlight 3.

If a Silverlight application is small, it will be downloaded quickly and appear in the browser. If a Silverlight application is large, it may take a few seconds to download. As long as your application takes longer than 500 milliseconds to download, Silverlight will show an animated splash screen.

Splash Screens can be used for the following purposes:

  1. To show the Progress of downloading the xap file. (By Default)
  2. Copyright Information
  3. Custom Animation.
Crating Silverlight Project

Fire up Visual Studio 2008 and create a Silverlight Application. Name it as SplashScreenInSL3.

image1.gif

The built in Splash Screen is not that exciting. It simply displays a ring of blinking circles and the percentage of the application that's been downloaded so far.

If you don't like the stock splash screen, you can easily create your own. Essentially, a custom splash screen is a XAML file with the graphical content you want to display, and a dash of JavaScript code that updates the splash screen as the application is downloaded.

Add a new XAML file to your ASP.NET website (not the Silverlight project).

Choose the Silverlight JScript page template, enter a name, and click Add. This XAML file will hold the markup for your splash screen.

image2.gif

Add the following xaml code into it.

image2.1.gif

<Grid xmlns="http://schemas.microsoft.com/client/2007"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel VerticalAlignment="Center">
    <Grid>
      <
Rectangle x:Name="progressBarBackground" Fill="White" Stroke="Black" StrokeThickness="1" Height="30" Width="200"></Rectangle>
      <Rectangle x:Name="progressBar" Fill="Yellow" Height="28" Width="0"></Rectangle>
    </Grid>
    <
TextBlock x:Name="progressText" HorizontalAlignment="Center" Text="0% downloaded ..."></TextBlock>
  </StackPanel>
</Grid>
Next, you need to add a JavaScript function to your ASPX entry page or ASP.NET test page. (If you plan on using both, place the JavaScript function in a separate file and then link to it in both files using the source attribute of the script block.) The JavaScript code can look up named elements on the page using the sender.findName() method, and manipulate their properties. It can also determine the current progress using the eventArgs.progress property. In this example, the event handling code simply updates the text and widens the progress bar based on the current progress percentage:

<script type="text/javascript">
        function onSourceDownloadProgressChanged(sender, eventArgs) {
            sender.findName("progressText").Text = Math.round((eventArgs.progress * 100)) + "% downloaded ...";
            sender.findName("progressBar").Width = eventArgs.progress * sender.findName("progressBarBackground").Width;
        }
    </script>

To use this splash screen, you need to add the splashscreensource parameter to identify your XAML splash screen and the onsourcedownloadprogresschanged parameter to hook up your JavaScript event handler. If you want to react when the download is finished, you can hook up a different JavaScript event handler using the onsourcedownloadcomplete parameter.

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SplashScreenInSL3.xap"/>
              <param name="onError" value="onSilverlightError" />
              <param name="background" value="white" />
              <param name="minRuntimeVersion" value="3.0.40624.0" />
              <param name="autoUpgrade" value="true" />
              <param name="splashscreensource" value="MySplashScreen.xaml" />
              <param name="onsourcedownloadprogresschanged" value="onSourceDownloadProgressChanged" />
  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
  <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
  </a>
 </object>

That's it run your application to test your Splash Screen. If you still don't see your Splash Screen that is because your page is loading in 500 milli seconds. To see the splash screen build your sample application and this time you will be able to see it.

image3.gif

Remember this is a sample Splash Screen. You can make your own Splash Screen.

Enjoy Coding.


Recommended Free Ebook
Similar Articles