Revision as of 09:41, 7 November 2012 by croozeus (Talk | contribs)

Custom splash screen page for Windows Phone applications

From Nokia Developer Wiki
Jump to: navigation, search

This article explains how to create a custom splash screen for your Windows Phone application.

WP Metro Icon UI.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata
Code ExampleTested with
SDK: Windows Phone 8
Devices(s): Windows Phone 8 Emulator
Platform(s): Windows Phone
Windows Phone 8
Windows Phone 7.5
Created: mehul_raje (02 Nov 2012)
Last edited: croozeus (07 Nov 2012)


In most cases during the launch of an application, you need to do some background operations such as making web request, parsing some data or something else and while doing this in background it is necessary to keep the user engaged by showing splash screen. This article helps you to create this splash screen.

  1. First create a Windows phone Project in visual studio.
  2. Delete default splash screen image from project.
  3. Your project already contains MainPage.xaml file, keep it as it is. Add a new Page named SplashPage.xaml in the project, replace the existing xaml file code with following code.
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Image Source="/splash.jpg" Stretch="Fill"/>

Make sure to set Template:ICode to False for using the full screen to display the image.

Modify SplashPage.cs

Now, edit SplashPage.cs file

  1. Handle the Template:ICode Event of SplashPage - Template:ICode, as shown below,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using System.IO;
namespace WindowsPhoneSample5
public partial class SplashPage : PhoneApplicationPage
private HttpWebRequest request;
public SplashPage()
Loaded += SplashPage_Loaded;
void SplashPage_Loaded(object sender, RoutedEventArgs e)
request = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://www.developer.nokia.com/Community/Wiki/Portal:Windows_Phone_UI_Articles"));
request.BeginGetResponse(new AsyncCallback(ReceiveResponseCallBack), null);
private void ReceiveResponseCallBack(IAsyncResult result)
HttpWebResponse response = (HttpWebResponse)this.request.EndGetResponse(result);
using (var stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
string str = reader.ReadToEnd();
Deployment.Current.Dispatcher.BeginInvoke(() =>
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

Please note that Template:ICode function merely makes an asynchronous HTTP request, and Template:ICode is called when the HTTP request returns a response. On receiving a response, the user is navigated to MainPage.xaml. deployment.Current.Dispatcher.BeginInvoke is used to access UI thread. Thus in the function, you may add code to perform any necessary background tasks while the splash screen is shown to the user.

From SplashPage the user is navigated to MainPage. Once the MainPage is loaded we should remove the stack entry of the SplashPage from back stack. This is done so that SplashScreen isn't considered as a page and the user doesn't navigate back to it by using the back key. To do this we need to modify the file MainPage.xaml.cs as follows.

namespace WindowsPhoneSample5
public partial class MainPage : PhoneApplicationPage
// Constructor
public MainPage()
Loaded += MainPage_Loaded;
void MainPage_Loaded(object sender, RoutedEventArgs e)

The last step is to add SplashPage.xaml in the Navigation Page tab of WMAppManifest - so user is shown the splash screen when the application is launched.

522 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.


Thank you!

We appreciate your feedback.