Silberlicht – Parameterübergabe

Henning über .NET

Manchmal erlebt man die schönsten Überraschungen wenn man einfach ‚mal die Beschreibung liest (in diesem Fall MSDN). Folgendes Problem… Man möchte z.B. einem Silverlight Usercontrol, das als Plug-in-Object in einer aspx Seite eingebettet ist, das aktuelle Datum auf dem Server in Ticks mitgeben. Das könnte man z.B. tun wollen, weil man auf einer gemeinsamen Basis arbeiten möchte und nicht von den Zeiteinstellungen auf dem Client abhängig sein will.

Ruft man direkt im Silverlight Control DateTime.Today auf bekommt man Client-Zeit. Diese kann wie gesagt von der des Servers abweichen. Eine einfache und praktikable, aber in der Literatur meist verschwiegene Möglichkeit stellen die sog. initParams dar. Via initParams kann man Parameter direkt an das Silverlight-Control übergeben (ähnlich FlashVars in Flash und Flex).


<object>
  <param name="initparams" value="myParameter"/>
  ...
</object>

Diese können dann im Application_Startup-Event der Datei App.xaml.cs verarbeitet werden.


private void Application_Startup(object sender, StartupEventArgs e)
{
    // Iteration über die InitParams...
    foreach (String key in e.InitParams.Keys)
    {
        //Mach was sinnvolles mit key und e.InitParams[key]
    }

    //bzw. direkt, wenn der Name bekannt ist...
    var parameter = e.InitParams["myParameter"];
}

In dem oben beschriebenen Fall würde man also folgenden Parameter spezifizieren:


<param name="initParams" value="ticks=<%= DateTime.Today.Ticks.ToString() %>" />

Es können mehrere Parameter nach dem Key = Value Prinzip übergeben werden. Diese werden dann mit Komma voneinander getrennt. Gerade wenn es darum geht einen dynamischen Wert auf einfache Art und Weise an ein SilverLight Plugin-Object zu übergeben ist diese Methode sehr geeignet.

Eine weitere Möglichkeiten sind URL-Parameter, die über die Silverlight HTML-Bridge geparst werden können. Zu diesem Thema findet sich, wie auch zu den initParams ein Beispiel auf MSDN.com.

HTH

Informationen über den Autor

Henning

...ist ein User Interface und User Experience Designer. Nebenbei Frontend Developer für Web-, Desktop- und mobile Plattformen. Mit mehr als 10 Jahren professioneller Projekterfahrung schreibt er zu den Themen Webdesign, -trends und -programmierung – eben fullstack! Follow @kingfries