Silverlight sobre Messenger Activity
Cómo pudiste ver en la introducción a Messenger Activity están basadas en HTML/DHTML lo que lo hace totalmente compatible con la tecnología Silverlight a continuación mostrare algunos pequeños pasos para desarrollar Activities usando Silverlight.
Como primera medida para agregar un proyecto Silverlight a un proyecto ASP.NET existente se realiza los siguientes pasos Archivo->Agregar->Nuevo Proyecto
El siguiente es un fragmento XAML que genera una sencilla interfaz de usuario.
El atributo ScriptableType es usado para que todas las propiedades, métodos publicos y eventos de una objeto .NET en Silverlight sea accesible desde código JavaScript. Y se debe registrar este objeto Scriptable mediante el método RegisterScriptableObject del objeto HtmlPage. Este método recibe dos parámetros el primero es una palabra clave que será usada como punto de entrada al contenido Silverlight que he llamado "Activity" para poder acceder a las propiedades, métodos y eventos del objeto que Scriptable y el segundo parámetro es el objeto al que se accederá desde javascript.
C#
VB.NET
Para este ejemplo he definido una propiedad de tipo string el cual se encarga de retornar y establecer la propiedad Text del TextBox perteneciente al contenido Silverlight llamado Mensaje_TextBox y un evento que se llama Actualizar que es invocado cuando el usuario realiza un clic sobre el botón que se encuentra en el contenido Silverlight.
El siguiente paso es agregar un control Silverlight desde la barra de herramientas al formulario web ya sea en vista de diseño o en vista de origen de esta manera Visual Studio te agregar el componente System.Web.Silverlight.dll, registrara el control al formulario web y realizara las respectivas modificaciones en el Web.Config.
Después de haber compilado el proyecto Silverlight se agrega un archivo .xap en una carpeta llamada ClientBin. El control Silverlight proporciona la propiedad Source en donde se estable la ruta del archivo .xap. Por otra parte este control proporciona un evento llamado onpluginload que es lanzado cuando el control ha sido descargado y cargado.
He agregado una función javascript llamada PluginLoad que nos servirá como manejador del evento onpluginload del control Silverlight. Este manejador nos servirá para establecer una función javascript como manejador del evento Actualizar que es invocado cuando el usuario realiza un clic sobre el botón del contenido Silverlight de esta manera cuando se captura el evento se envía mediante el método SendData() del objeto Channel el contenido de la propiedad Mensaje que retorna el contenido del control Mensaje_TextBox.
Cuando es invocado el evento OnDataReceived() en el cliente remoto al momento de llegar datos estos datos son establecidos en la propiedad Mensaje que se encarga de cambiar el contenido del control Mensaje_TextBox del cliente remoto. De esta manera se sincroniza los controles Silverlight de ambos clientes.