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 intuitiva 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:

protected void Page_Load(object sender, EventArgs e)
{
    parametros.Text = string.Format("nombre={0},fecha={1}", "Rodrigo", DateTime.Now.ToString());
}

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:

private void Application_Startup(object sender, StartupEventArgs e)
{
    string nombre = string.Empty;
    string fecha = string.Empty;
    if (e.InitParams.Count > 0)
    {
        if (e.InitParams["nombre"] != null)
            nombre = e.InitParams["nombre"];
 
        if (e.InitParams["fecha"] != null)
            fecha = e.InitParams["fecha"];
    }
 
    this.RootVisual = new MainPage(nombre, fecha);
}

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

Salu2!