Como sabrán una de las cosas que la versión final de Silverlight 3 no tiene es el control de ASP.NET AJAX para Silverlight (control <asp:Silverlight>).  Esto es un cambio de paradigma, para todos aquellos que estábamos acostumbrados a utilizarlo en nuestras páginas .aspx, ya que no tenemos una manera intuititva de establecer las propiedades para el plugin de Silverlight 3.  El camino a seguir ahora es utilizar la etiqueta <object> de HTML.  Pueden encontrar una lista de los parámetros que podemos establecer para nuestras aplicaciones Silverlight en esta página del MSDN.

Ahora bien, la pregunta es: ¿cómo podemos establecer parámetros iniciales dinámicos del lado del servidor para el plugin de Silverlight?  Esto como recordarán estaba en la propiedad InitParameters del control <asp:Silverlight>, y al ser un control de servidor podíamos utilizarlo en el evento Page_Load de la página.  Con <object> este ya no es el caso pero de todas formas sí podemos establecer parámetros iniciales de manera dinámica del lado del servidor si utilizamos el control <asp:Literal> al agregar el parámetro initParams de la siguiente manera:

<param name="initParams" value=’<asp:Literal runat="server" ID="parametros" />’ />

Esto nos permitire tener acceso programático del lado del servidor al control llamado ‘parametros’ y establecer en él cualquier valor que necesitemos.  El siguiente fragmento de código muestra el manejador del evento Load de la página aspx:

1
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> Page_Load(<span style="color: #0000ff">object</span> sender, EventArgs e)

1
{

1
parametros.Text = <span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;nombre={0},fecha={1}&quot;</span>, <span style="color: #006080">&quot;Rodrigo&quot;</span>, DateTime.Now.ToString());

1
}

Como podemos apreciar, se están estableciendo dos parámetros iniciales: usuario y fecha.  Para leerlos lo hacemos de la manera tradicional, por medio de los argumentos del evento Application.Startup de nuestra aplicación Silverlight:

1
<span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> Application_Startup(<span style="color: #0000ff">object</span> sender, StartupEventArgs e)

1
{

1
<span style="color: #0000ff">string</span> nombre = <span style="color: #0000ff">string</span>.Empty;

1
<span style="color: #0000ff">string</span> fecha = <span style="color: #0000ff">string</span>.Empty;

1
<span style="color: #0000ff">if</span> (e.InitParams.Count &gt; 0)

1
{

1
<span style="color: #0000ff">if</span> (e.InitParams[<span style="color: #006080">&quot;nombre&quot;</span>] != <span style="color: #0000ff">null</span>)

1
nombre = e.InitParams[<span style="color: #006080">&quot;nombre&quot;</span>];

1
&#160;

1
<span style="color: #0000ff">if</span> (e.InitParams[<span style="color: #006080">&quot;fecha&quot;</span>] != <span style="color: #0000ff">null</span>)

1
fecha = e.InitParams[<span style="color: #006080">&quot;fecha&quot;</span>];

1
}

1
&#160;

1
<span style="color: #0000ff">this</span>.RootVisual = <span style="color: #0000ff">new</span> MainPage(nombre, fecha);

1
}

De esta manera, podemos sortear la falta del control asp:Silverlight en nuestros aplicativos de Silverlight 3.

Salu2!