WPF Splash Screen – A New Splash Screen Manager (v20.1)

WPF Team Blog
06 July 2020

A splash screen is an effective way to improve an app’s user experience during lengthy startup operations. Unfortunately, creating an effective splash screen can be tricky because two competing objectives must be addressed simultaneously:

  • A splash screen needs to be visually appealing. It’s your first chance to make a great impression.
  • A splash screen should load instantaneously. Loading delays will defeat the overall purpose of the splash screen.

As you may already know, our WPF Subscription includes the Splash Screen control - a UI component that was built years ago to help you create and add splash screens to any WPF app.

Our latest release (v20.1) includes an entirely new Splash Screen control - a UI component we’ve named SplashScreenManager.

Let’s quickly look at the new DevExpress Splash Screen Manager, review why it was built, and why we replaced DXSplashScreen.

Design Elegance

Our WPF Splash Screen Manager ships with two predefined styles – Themed, Fluent (Acrylic).

As its name implies, a Themed Splash Screen uses the same color scheme as that used by your application.

Our next predefined style - Fluent Splash Screen - features an Acrylic effect. As you can see below, this splash screen uses a translucent background. Once again, we’ve optimized the splash screen as much as possible – making certain that it loads quickly.

App-wide Wait Indicators

Wait Indicators are a great way to provide feedback during time-intensive operations. I can cite countless examples to illustrate this point. For instance, a wait indicator will improve an app’s user experience during long fetch operations.

You can use our new Splash Screen Manager to create wait indicators within your app as needed. Simply set the owner and trackOwnerPosition parameters of the Show method to place a splash screen atop a specific UI element and keep it there if the user resizes or drags the window around.

Splash screens created with the Splash Screen Manager are processed in a separate thread and do not interfere with the main application flow.

However, you may want to control user interaction with your application once you’ve displayed the “splash screen” in this specific usage scenario. This can be done with a single method parameter. Your options vary: you can block the application, restrict input within the window but allow the user to drag the window around, or block a specific element. It’s all up to you.


This post began with a simple proposition – a splash screen must be loaded quickly. Well, we designed SplashScreenManager so it’s fast. To maximize performance and ensure a timely display, we’ve made certain not to load all DevExpress Theme resources – We load what we need so we can render the splash screen quickly.

We have measured the startup time on different PC configurations with and without the Ngen.exe optimization:

Themed Splash Screen: 290-450 ms

Fluent Splash Screen: 300-460 ms

Compiled with Ngen.exe:

Themed Splash Screen: 170-370 ms

Fluent Splash Screen: 180-370 ms

In comparison, DXSplashScreen (with a default template) renders in 720-1000 ms. (450-900 ms after Ngen.exe compilation). The bottom line is this: our new SplashScreenManager loads about 50% faster.

Of course, performance metrics are app dependent. If you’d like to take a closer look at our comparison figures, simply download this project from Github: https://github.com/DevExpress-Examples/splashscreenmanager-startup-test

Ease of Use

We’ve tried to make use of the SplashScreenManager as painless as possible. Here is how you can integrate it into your next app:

Step One - Add the following code to App.xaml.cs:

SplashScreenManager.CreateThemed(new DXSplashScreenViewModel { 
    Status = "Starting...", 
    Title = "The Best or Nothing!" } 

Step Two – Just kidding, there’s no second step. The code above generates a splash screen using an application’s default color scheme, displays it with a priority over the main application to minimize delays, and hides it once the application is initialized.

Ease of Customization

You can edit the content of our predefined splash screens with a few lines of code by accessing the view model. You can swap the image used, edit displayed text, and modify progress bar value.

If you require more extensive customization, you can incorporate a predefined splash screen from our Template Gallery or implement your own design from scratch. Our documentation includes a tutorial to help simplify this process.

MVVM in Mind

We extended our set of services to help you add SplashScreenManager functionality to MVVM-compliant applications. Add a splash screen from our template gallery to your application, customize it as you see fit and then add the SplashScreenManagerService to your view of choice. Easy as 1-2-3.


If you'd like to share your thoughts about SplashScreenManager, please post a comment below. We’ll be happy to follow up.

Free DevExpress Products – Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We’ll be happy to follow-up.
Dalibor Stys
Dalibor Stys
Hello, how can I use ShowOnStartup method with SplashScreenManagerService?
8 July 2020


What about WinForms?

Is this new, faster SplashScreen available in WinForms?


8 July 2020
Dmitry (DevExpress)
Dmitry (DevExpress)


Yes, Themed and Fluent splash screens are available in WinForms v20.1 release. You can watch this video on our YouTube channel for more information: Fluent UI and Skins. As for the "faster" part of your question, WinForms splash screens never had performance issues before. That is, you won't get a significant performance boost from these new splash screens, but they are still fast :)

8 July 2020
Vasily (DevExpress)
Vasily (DevExpress)


The SplashScreenManagerService does not have the ShowOnStartup method. This service displays a splash screen at runtime. The ShowOnStartup method is used to display a splash screen at application startup - when the MVVM environment has not even started initializing.

8 July 2020
Dalibor Stys
Dalibor Stys


Thank you for your answer. This makes sense, I was just asking because the previous splashscreenservice had ShowSplashScreenOnLoading parameter.

8 July 2020
Vasily (DevExpress)
Vasily (DevExpress)


You are welcome! Ask away if you have any other questions.

8 July 2020
Bryan Steyns

Hi, we recently changed all our DXSplashScreen for using this new SplashScreenManagerService, as it provides better performances.

However, we noticed that there is a big memory leak every time the "Show()" method is called (from the SplashScreenManager). The memory jumps by 30Mb to 60Mb every time we call this method to display a splashscreen. We use it quite a lot when we are loading a new screen or refreshing data. It ends up with Out of memory exceptions.

I did an analysis with dotMemory but couldn't get any more info on the leaked memory, as it was tagged as "Unmanaged memory".

Are you aware of this problem and do you have any way to fix it ?

Thanks in advance.

9 September 2021
Vasily (DevExpress)
Vasily (DevExpress)
I see that you have already created a support center ticket about the memory leak issue. We were able to replicate and resolve the issue and will include a fix in the next maintenance update. You can request the hotfix here.
Feel free to contact the DevExpress Support Team in the future if you have any questions or concerns about our products.
10 September 2021
This explanation sucks.  Don't show anything complexed here
7 June 2022

Please login or register to post comments.