Quantcast
Channel: Caliburn.Micro: Xaml Made Easy
Viewing all articles
Browse latest Browse all 1760

New Post: Yet Another Splash Screen Discussion :)

$
0
0
I'm new to CM and mostly loving it. I have but one gripe so far: I don't know how to use the Conductor/Screen architecture to show a progress-updating splash screen. I'm sure I'm just looking at the problem the wrong way.

Yes, I have read all the previous posts on how to orchestrate a Splash Screen in CM. None of them have resolved in a way that I consider "good guidance."

For me this is necessary only because I want to update a label on my splash image as my application loads, to give users some feedback as it is doing so. It is a large application and the startup process involves some asynchronous calls as well as some synchronous build-up logic, and I'd like the user to be informed as it progresses. It's a usability issue more than anything and if all else fails I can just show a splash image.

Though CM has simplified many things, it's not clear to me how to implement the informative splash screen idiom in a canonical way that doesn't feel like scratching my left ear with my right hand.

So here are my requirements:
  1. As the application bootstrapper starts loading, it displays a splash screen, which can receive notification messages as the shell view model is loaded (hence it depends on IEventAggregator). It consists of a background image and a label which overlays a conspicuously blank part of the image. Initially this label says "Loading...".
  2. As it is loading the ShellViewModel fires text messages about its progress that the splash screen displays.
  3. When the application loading is nearly complete the ShellView appears behind it and the SplashScreen is dismissed.
I've tried a number of different things but could use, and would appreciate, any experienced help to avoid cycling on what should be a fairly trivial thing.

Viewing all articles
Browse latest Browse all 1760

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>