Leggere parametri custom dall’object di Silverlight

Ultimamente sto lavorando ad una piccola applicazione in Silverlight, nello specifico un wall di DeepZoom che ha il compito di mostrare le immagini caricate dagli utenti, sfruttando questa fantastica tecnologia.
L’applicazione offre sì la possibilità di caricare le foto direttamente dagli utenti di una community, ma offre anche la possibilità di creare il wall lato editoriale, quindi da backoffice dell’applicativo, e di far ridistribuire sui clients soltanto l’object tag ed il javascript necessario.

Proprio per questo tipo di richieste si può avere la necessità di aggiungere dei parametri custom all’object che si rilascia, in modo che fornisca alcune informazioni utili alla visualizzazione.

In pratica è sufficiente aggiungere un parametro, il cui name sarà initParams, nel tag object della pagina, con al suo interno la coppia chiave-valore che si desidera utilizzare in Silverlight, separati dalla virgola.
L’esempio seguente mostra il markup dell’object.

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    <param name="source" value="ClientBin/MyApplication.xap" />
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="3.0.40624.0" />
    <param name="autoUpgrade" value="true" />
    <param name="initParams" value="param=1,param2=prova" />
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none">
        <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" />
    </a>
</object>

Lato server, all’avvio dell’applicazione viene effettuato uno split dei vari elementi ed vengono forniti tramite un dictionary nel metodo Application_Startup della classe App del progetto Silverlight.
Il codice seguente mostra come recuperare i valori inseriti nell’object e passarli alla nostra “Page”.

public partial class App : Application
    {
    
        public App()
        {
            Startup += Application_Startup;
            Exit += Application_Exit;
            UnhandledException += Application_UnhandledException;

            InitializeComponent();
        }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            int parameter1= 0;
            string parameter2 = string.Empty;
            
            if (e.InitParams != null && e.InitParams.Count > 0)
            {
                parameter1= int.Parse(e.InitParams["param1"]);
                parameter2 = e.InitParams["param2"];
            }

            RootVisual = new MainPage(parameter1, parameter2);
        }

        private void Application_Exit(object sender, EventArgs e)
        {
        }
}

Enjoy Silverlight!


Comments