TIP - Silverlight - InitParams and ApplicationLifeTimeService(s)

I have this love-hate relationship with InitParams


  • Pre-download values to Silverlight, so it's available to the client before Silverlight even starts rendering
  • Don't have to worry about whether Silverlight can talk to any data source - if you can't see the webpage then the problem is elsewhere


  • Well it's on the web page…  anyone could see it, and probably tweak it via DOM manipulation
  • If you bind to this data, you can't really "update" it if the data changes on the server.  If say the user settings has changed, you'll need a F5 refresh to force the Silverlight client to reload.  In a sense this is often treated like read-only data.

One thing we can fix

  • A really large App.Current with lots of different values sucked out from the initParams during App_Start


Using ApplicationLifeTimeServices

1. Write a Lifetime Service

    public class CompanyApplicationLifeTimeService : IApplicationService
        static CompanyApplicationLifeTimeService _current = null;

        public static CompanyApplicationLifeTimeService Current
                return _current;

        #region IApplicationService Members

        public void StartService(ApplicationServiceContext context)
            _current = this;
            var parseThisStuff = context.ApplicationInitParams;

        public void StopService()
            _current = null;


2. Add this to your App.Xaml

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    <common:CompanyApplicationLifeTimeService x:Name="CompanyLifeTimeService" />


3. Now anywhere in your code you have access to the service Singleton