title: WPF Startup Screen like Blend
body: <p>Our main WPF window ('Main Window') takes considerable time to create (it is using a ribbon and docking panel similar to Visual Studio). Just like in Blend the <strong>first action</strong> will always be to either <strong>choose an existing project to work on or to create a new project</strong>. Therefore we would like to show this 'Select Project' window as quickly as possible and create the heavy 'Main Window' in the background (invisible until the user clicks OK on the 'Select Project' window).</p>
  
  <p>What's the best way to architect this startup scenario, preferably using 2 WPF windows (one for the project selection and one for the main control)?</p>
  
  <p>I'm aware of <a href="http://blogs.msdn.com/jgoldb/archive/2007/12/10/splash-screen-to-improve-wpf-application-perceived-cold-startup-performance.aspx" rel="nofollow noreferrer">this sample</a> which demonstrates how to load a Win32 window shortly after application startup, but I'd prefer a WPF-only solution.</p>
  
  <p>Another potential solution is to use <a href="http://eprystupa.wordpress.com/2008/07/28/running-wpf-application-with-multiple-ui-threads/" rel="nofollow noreferrer">multiple WPF UI threads</a>, however lifetime management and window-to-window communication are non-trivial.</p>
  
  <p><strong>Questions:</strong></p>
  
  <p>Will I be able to see a <strong>faster startup time when implementing the 2 WPF window solution</strong> as compared to simply creating the 'Main Window' and not implement the 'Select Project' window (assuming I can find an implementation that takes care of the window lifetimes)? </p>
  
  <p>Should the <strong>'Select Project' window be created on the main application thread</strong> and the 'Main Window' on a background thread (or visa versa)? </p>
  
  <p>If I need to use a Win32 startup window for speed, <strong>how would I communicate</strong> the user's choice of project name <strong>to the main WPF application window</strong>?</p>
  
  <p>Does anyone know how <strong>Blend actually implements their startup window</strong> (which I am trying to mimic here)?</p>
  
  <p>Any implementation pointers would be much appreciated!</p>