Web Slices de Internet Explorer 8 con Silverlight

En el marco del Festival de Instalación de Internet Explorer 8 que tuvimos el día de hoy en varias ciudades de todo México, quiero detallar la potencia que tienen los Web Slices sobre todo si los usamos con una plataforma RIA como Silverlight.

Pero ¿qué es un Web Slice?  Un Web Slice es un fragmento o vista previa de una página que puede mostrarse en una ventana dentro de Internet Explorer 8 sin necesidad de cambiarte de la página en donde estás actualmente.  La creación de los Web Slices es bastante sencilla ya que no son más que fragmentos de código HTML que deben implementar ciertas clases de Css específicas, para que el navegador trate ese fragmento como, precisamente, un Web Slice.  Estas clases están definidas en la Especificación del Formato de los Web Slices que podemos encontrar en el MSDN y que al tiempo de la publicación de este artículo se encuentra en la versión 0.9.

Las clases más básicas para la construcción de Web Slices son las siguientes:

  • hslice:  Indica el comienzo de la definición del Web Slice (requerido)
  • entry-title: Indica el título para el Web Slice (requerido)
  • entry-content: Indica el contenido para el Web Slice (opcional)
  • feedurl:  Se aplica al atributo rel de un elemento <a> e indica una fuente de dónde podemos tomar información para incluir en el Web Slice (opcional)
  • bookmark:  Se aplica al atributo rel de un elemento <a> e indica la ruta de navegación al abrir el Web Slice

El siguiente fragmento de código muestra la implementación de un Web Slice simple:

Cuando Internet Explorer 8 muestra una página en donde se encuentra un fragmento como el anterior, se mostrará la opción para agregar Web Slices al navegador como lo muestra la siguiente figura:

Menú de agregar Web Slice

Al agregar el Web Slice, este será colocado en el menú del navegador, listo para poderlo utilizar incluso sin cambiarnos de la página actual que estemos desplegando!

Web Slice básico

Web Slices + Silverlight = Pareja perfecta

Ahora bien, gracias a esta característica, incluso nos será posible a los desarrolladores de Silverlight el crear Web Slices que no solamente utilicen HTML como lo vimos en el ejemplo anterior, sino que también podremos utilizar Silverlight como parte del Web Slice, a través de la instanciación correspondiente del plugin dentro de él (usando el elemento <object> por ejemplo).

Por ejemplo, en mi blog tengo un widget hecho con Silverlight 2 que muestra la lista de próximos cursos del Silverlight Tour.  Este widget está incorporado a través de los propios widgets de WordPress: el motor de blogging que usa mi sitio.  La instanciación de la aplicación de Silverlight es hecha a través de un <object> el cual se le pasan los parámetros correspondientes, principalmente el parámetro source el cual indica de dónde tomará el empaquetado .xap para su instanciación:

Y es debido a esto precisamente que podemos realizar una segunda página HTML que implemente la aplicación de Silverlight, y sea esta página la que invoquemos desde el Web Slice!  Los siguientes fragmentos de código muestran la página que hospeda la aplicación Silverlight, como el Web Slice que es desplegado en el menú de Internet Explorer 8 respectivamente:

Aplicación Silverlight

Web Slice

El Web Slice, al ser agregado a través del menú correspondiente en Internet Explorer, permitirá que tengamos el siguiente Web Slice en el navegador:

Web Slice con Silverlight

Demostrando así que podemos incorporar Silverlight 2 o 3 dentro de los Web Slices y no estar limitados a las propias fronteras de HTML.  Cabe notar el uso del atributo rel=”bookmark”; esto indica el Url a donde irá el navegador cuando abramos el Web Slice con el botón dentro de su ventana.

Resumen

Los Web Slices nos permiten desplegar un fragmento de contenido en un menú dentro de Internet Explorer 8.  Esta característica brinda a los usuarios un mecanismo de actualización de información sin tener que estar consultando la o las páginas en cuestión cada vez.  Similar a lo que conseguimos hoy en día con RSS pero con mayor potencia ya que podemos complementar la experiencia para el usuario con el uso de Silverlight.

Silverlight 3 Beta 1: Diccionarios de Recursos de tipo Merged

Introducción

Otra característica nueva en Silverlight 3 Beta 1, tomada de su hermano mayor WPF son los Diccionarios de Recursos de tipo Merged (mezclados, unidos), o en inglés: Merged Resource Dictionaries; los cuales nos permiten tener de manera desacoplada recursos (por ejemplo estilos) en un archivo por separado.  Esto nos ofrece un mecanismo para compartir estilos entre diferentes proyectos de Silverlight, o incluso entre proyectos de Silverlight y proyectos de WPF.

El archivo deberá tener declarado todos y cada uno de los Recursos que deseamos incorporar a ese diccionario, y deberán estar contenidos en un elemento de tipo <ResourceDictionary>.  El siguiente fragmento de código Xaml muestra un archivo llamado Estilos.xaml que funge como Diccionario de Recursos:

Noten cómo el elemento <ResourceDictionary> incluye los espacios de nombre xml, esto para poder resolver de manera correcta los elementos que agreguemos como Recursos en el Diccionario.

Por otro lado, para invocar ese Diccionario desde algún Diccionario de Recursos (UserControl, Application o algún contenedor) tenemos que hacerlo a través del elemento <ResourceDictionary> lo cual veremos más adelante en este mismo artículo.

Ahora bien, el archivo que contenga el Diccionario de Recursos podrá tener cualquier nombre arbitrario, pero lo que es un hecho es que el XAP aún necesitará referenciarlo de alguna manera:

  • Agregándolo como archivo en el proyecto de Silverlight y marcarlo como Resource
  • Agregándolo como archivo en el proyecto de Silverlight y marcarlo como Content
  • Tenerlo en un Ensamblado externo

Cada opción afecta la sintaxis con la que invocaremos el Diccionario de Recursos.

Build Action = Resource

Cuando marcamos un archivo como Resource en un proyecto de Silverlight, dicho archivo se incluirá en el diccionario de Recursos del Ensamblado.  Este mecanismo es conveniente cuando queremos tener una experiencia WYSIWYG en el diseño de la aplicación, ya que Visual Studio resolverá de manera inmediata el archivo.

Si utilizamos esta opción para el archivo con el Diccionario de Recursos, entonces la sintaxis en Xaml para referenciar los recursos que contiene deberá de ser de la manera:

nombre del ensamblado;component/nombre del archivo.xaml

El siguiente ejemplo de código muestra esta sintaxis al invocar el Diccionario:

Build Action = Content

Si marcamos el archivo como Content, el archivo formará parte del empaquetado XAP como tal, y ya no del Diccionario de Recursos del Ensamblado como mencionamos con anterioridad.

Si utilizamos esta opción, la sintaxis para referenciar el archivo del Diccionario de Recursos será:

/Nombre del archivo.xaml

Por ejemplo:

Pero en este caso Visual Studio tendrá un comportamiento inesperado ya que no podremos ver el diseñador correctamente sino hasta ejecutar la aplicación como tal.

Diccionario de Recursos Merged en otro Ensamblado

Para usar un Diccionario de Recursos que está en otro Ensamblado, necesitamos primeramente referenciar el .dll en cuestión y posteriormente utilizar la misma sintaxis que vimos cuando el archivo está marcado como Resource en el mismo proyecto (sección “Build Action=Resource” en este mismo artículo).  Cabe mencionar que en este caso también el archivo deberá estar marcado como Resource en el Ensamblado externo.

Resumen

Los Merged Resource Dictionaries nos permiten crear una lista de recursos en un archivo para poderlos reutilizar entre diferentes proyectos de Silverlight o incluso entre un proyecto de Silverlight y uno de WPF ya que brindan un mecanismo de fácil implementación y desacoplamiento.

Búsquedas con el API de Bing y Silverlight

Introducción

Hace algún tiempo hice un artículo de cómo podemos utilizar el API de Live Search en nuestras aplicaciones de Silverlight.  Este es únicamente una actualización a ese artículo pero ahora utilizando el API de Bing.

bing

Ahora que Bing ha sido liberado al público en general uno de los puntos muy importantes a destacar es la actualización que Microsoft ha hecho del API de búsqueda que podemos incorporar en nuestras aplicaciones.  Aunque la experiencia en el desarrollo con esta nueva API es bastante similar a lo que teníamos con anterioridad en Live Search, es destacable el hecho de que ahora podemos hacer búsquedas en Encarta Instant Answers (Respuestas Instantáneas de Encarta), lo cual nos permite no solamente buscar una cadena en páginas Web, sino también en esta importante y enorme enciclopedia en línea.  Esto lo logramos usando InstantAnswers como parte de la propiedad SourceType[] cuando creamos un Request.

Otro punto novedoso del API es el SourceType de tipo RelatedSearch el cual nos permite hacer búsquedas relacionadas con la búsqueda actual.  Para ver todas las novedades del API de Bing lo puedes hacer en esta página.

InstantAnswers de Encarta con Silverlight

Paso 1

Lo primero que tenemos que hacer al igual que en la versión del API de Live Search es registrarnos en el portal de desarrolladores para obtener un AppID.  El AppID es la puerta que nos permite hacer búsquedas en el motor ya que está ligado a nuestra cuenta de MSN.  Para obtener tu AppID lo puedes hacer aquí.

Paso 2

Ahora que ya tienes tu AppID disponible el siguiente paso será decidir la manera de como nos vamos a comunicar al servicio de búsqueda: a través de JSON, XML o SOAP.  En el caso de este artículo haré la demostración con SOAP debido a que Visual Studio .NET nos ayuda a crear la clase proxy ya que el servicio es autodescriptible, es decir, expone un WSDL que podemos usar para identificar su funcionamiento.

Paso 3

El paso siguiente es crear una nueva aplicación de Silverlight por medio de la plantilla de Visual Studio .NET.  Posteriormente agregamos la referencia al servicio localizado en: http://api.search.live.net/search.wsdl?AppID=TUAPPID (es el mismo Url que el API de Live Search).

Para hacer una búsqueda en Encarta Instant Answers tenemos que especificar el tipo de SourceType en la propiedad Sources cuando creamos el Request.  El siguiente fragmento código muestra un ejemplo de la construcción del Request:

Noten cómo en este ejemplo estoy estableciendo la propiedad Market a “es-MX”.  Al especificar esto estoy indicando el idioma y país para la búsqueda.  Si no hacemos esto la búsqueda automáticamente tratará de detectar mi localización geográfica e idioma adecuado basándose en mi dirección de IP y otros parámetros.

Asimismo esto es importante mencionar ya que algunas preguntas abiertas no podrán ser contestadas en esta demostración ya que en su mayoría responde únicamente a preguntas en idioma Inglés.

Finalmente un punto muy importante al obtener las respuestas de Encarta Instant Answers es el hecho de que la propiedad InstantAnswerSpecificData es de tipo string pero está expresada como un documento XML, así que la interpretación de dicha cadena es necesaria.  A continuación se muestra un código de ejemplo de cómo podemos interpretar dicha propiedad para sacar la información necesaria:

Bing con Silverlight

Para ver la aplicación en acción lo puedes hacer en esta página (el plugin de Silverlight 3 es requerido):

http://silverlight.services.live.com/invoke/76819/Silverlight%20-%20Bing%20Instant%20Answers/iframe.html

Lanzamiento de Silverlight 3 y Expression Blend 3 el 10 de Julio

Esta es LA noticia que todos los que estamos inmersos en el mundo de Silverlight estábamos esperando:  según Mary Jo Foley el 10 de Julio es el día en el que Microsoft lanzará las versiones finales de Silverlight 3 y Expression Blend 3 en la ciudad de San Francisco.

No cabe duda que Microsoft está apoyando y respaldando esta tecnología y le está apostando a convertirse en la tecnología de facto en los próximos años para las aplicaciones Web en su plataforma.  Si aún estás escéptico acerca de Silverlight, este es el mejor momento en que te enteres qué tiene para ti, para tus aplicaciones y para tu empresa!

Y qué decir de Expression Blend 3?  Pudimos apreciar en el MIX09 sus maravillosas características y mejoras y al mismo tiempo veíamos tan lejos el día en el que pudieramos tenerlo en nuestras mano… bueno pues ese día ya tiene nombre (o número ;) ).

Excelente noticia!!!

Desarrollo con Silverlight en Visual Studio 2010 Beta 1

Solo si han estado debajo de una piedra no sabrán que el día de hoy fue liberado públicamente el Beta 1 de Visual Studio 2010.  La nueva versión de esta herramienta incluye enormes mejoras que merecen un artículo cada una de ellas junto con las nuevas características que podemos encontrar en el .NET Framework 4.0, pero en este artículo nos enfocaremos al desarrollo de aplicaciones de Silverlight con Visual Studio 2010 Beta 1.

Hola Visual Studio 2010

Uno de los primeros cambios evidentes que podemos encontrar en Visual Studio 2010 es que la lista de plantillas de proyectos ahora está un poco más organizada, nos ofrece la capacidad de filtrar plantillas según la versión del .NET Framework al que deseamos apuntar, un cuadro de texto para buscar a través de una cadena en las plantillas, además de permitir ordenamiento por nombre de manera ascendente o descendente:

Caja de diálogo de Nuevo Proyecto en Visual Studio 2010

Crearemos una nueva aplicación llamada SL2010 usando la plantilla de Silverlight Application.  Otro cambio presente en esta nueva versión será en la caja de diálogo “Add Silverlight Application” (Agregar Aplicación de Silverlight), ya que nos permitirá elegir la versión de Silverlight a la que deseamos apuntar!

Caja de diálogo Add Silverlight Application en Visual Studio 2010

Una mejora que sin duda es una de las más solicitadas desde hace tiempo es la capacidad de utilizar Visual Studio con múltiples monitores, esto ya es posible si simplemente desacoplan alguna ventana y la pasan al monitor que deseen.  En la siguiente foto se muestra en la parte izquierda el IDE de Visual Studio 2010 y en el monitor de la izquierda el editor de código fuente de Page.xaml.cs de la solución que acabamos de crear en los pasos anteriores:

Soporte de múltiples monitores en Visual Studio 2010

El editor es donde más cambios y mejoras vamos a poder apreciar.  Visual Studio 2010 Beta 1 trae consigo un soporte mucho más robusto para edición de Xaml de manera visual.  En esta nueva versión podremos editar desde la ventana de Propiedades los valores de las propiedades de elementos y/o controles sin necesidad de hacerlo directamente en el código Xaml.  La siguiente figura muestra el soporte incluso de propiedades de tipo Brush en donde podemos notar cómo la experiencia es similar a la que podemos encontrar en Expression Blend:

Editor de Brochas en Visual Studio 2010

En el editor también podemos crear y manipular las propiedades de los contenedores, por ejemplo el Grid el cual nos provee un mecanismo de distribución a través de columnas y filas –similar a una tabla-.  En el mismo editor (similar a la experiencia en Expression Blend) podemos crear las columnas filas necesarias para el contenedor, y asimismo indicar el tipo de unidad que deseamos para la altura o ancho: *, Auto o fijo:

Otra característica bastante útil y que no está presente en Visual Studio 2008 es la capacidad de arrastrar y colocar controles y elementos en el mismo editor.  La versión 2008 se limitaba a permitirnos únicamente arrastrar y colocar los controles en el editor de código Xaml: algo bastante inútil.  Ahora en esta nueva versión de Visual Studio 2010 Beta 1 el editor se comporta tal y como lo esperamos, similar al comportamiento que tiene Expression Blend cuando tratamos de realizar la misma tarea, incluso similar a las aplicaciones ASP.NET:

Un editor –decente pero no tan potente como en Blend- de Data Bindings también está disponible para nosotros en esta versión.  Esta característica nos permite establecer y editar enlace a datos desde la ventana a propiedades.  A diferencia de Blend, en Visual Studio no hay una manera visual para crear recursos en un control de usuario de Silverlight, no obstante teniendo la fuente de datos ya declarada en el Xaml podemos una manera sencilla el binding utilizando el editor contextual en la ventana de Propiedades:

Los Markup Extensions como {Binding} ahora muestran sus propiedades inherentes en Intellisense, lo cual es una magnífica mejora cuando estamos escribiendo este tipo de objetos:

Visual Studio 2010 es lo suficientemente hábil para mostrarnos aquellos recursos que tenemos disponibles y que están a nuestro alcance, para poderlos utilizar en aquellas propiedades en las que hagan sentido.  Tal es el caso de un DataTemplate declarado en el diccionario de recursos a nivel del UserControl en la aplicación que aquí se muestra, en donde podemos apreciar cómo se despliega como opción en la propiedad ItemTemplate de un ListBox:

Finalmente, una característica muy importante y práctica que podemos encontrar en Visual Studio 2010 es la posibilidad de escalar o des-escalar la versión de nuestra aplicación entre Silverlight 2 y Silverlight 3.  Esto es una gran ventaja si estás desarrollando en una versión específico pero quieres comprobar cómo se comporta si cambias de versión.

Ventana de propiedades del proyecto de Silverlight en Visual Studio 2010

Obviamente si des-escalas una aplicación de Silverlight 3 a Silverlight 2 perderás todas las características inherentes a esa versión, y viceversa: si escalas tu proyecto de Silverlight 2 a 3 inmediatamente podrás utilizar todas las nuevas funcionalidades presentes en la última versión.  Nota: si haces un cambio de versión por medio de esta opción no cambiarán adecuadamente los parámetros MinimumVersion y minRuntimeVersion de las páginas .aspx y .html respectivamente.

Resumen

Visual Studio 2010 Beta 1 es la primer versión estable de la próxima generación de herramientas para desarrollo de aplicaciones .NET.  Cuenta con un soporte mucho más amplio para el diseño y codificación de Xaml y por ende de Silverlight.  Además cuenta con la opción de permitirnos elegir sobre cuál versión de Silverlight queremos programar, lo que hace de esta herramienta una de los más importantes y esperados lanzamientos en lo que al desarrollo de Silverlight respecta.

Silverlight: Descarga de Ensamblados bajo demanda

Introducción

Una de las preguntas que más frecuentemente me preguntan en proyectos o entrenamientos de Silverlight es la posibilidad de descargar ensamblados (assemblies) .DLL bajo demanda, es decir que no sean parte del archivo .XAP sin perder la experiencia en el uso de tipos en Visual Studio .NET (Intellisense principalmente).  Menciono esto porque Silverlight soporta Reflection: la serie de clases que nos permiten inspeccionar e invocar tipos de manera dinámica.  El problema con esta opción es que perdemos precisamente la capacidad de early-binding, Intellisense, etc.  En este artículo veremos cómo podemos desacoplar ensamblados externos y descargarlos/cargarlos bajo demanda (sin usar Reflection).

La Solución

Crearemos una nueva solución de Silverlight utilizando la plantilla para Visual Studio .NET 2008.  A la solución le llamaremos DemoDescargaAssembly.  Además agregaremos un nuevo proyecto llamado DemoAssembly de tipo Silverlight Class Library (Biblioteca de Clases de Silverlight) en esta solución.  Al agregar una referencia a DemoAssembly en la aplicación de Silverlight y después compilar tendremos como resultado un archivo llamado DemoDescargaAssembly.xap.  El comportamiento por default de Visual Studio .NET es que el .dll lo agregará dentro del archivo .xap tal y como lo muestra la siguiente figura:

Archivo XAP con DLL incluido

Esto se debe a que automáticamente al agregar la referencia a un .dll en nuestro proyecto de Silverlight, la propiedad Copy Local estará en true.  No obstante si cambiamos el valor a false el comportamiento cambiará ya que el ensamblado no será empaquetado en el archivo .xap, pero nuestra experiencia en el desarrollo sigue sin modificaciones ya que podemos seguir haciendo uso de los miembros del ensamblado gracias a la referencia existente.

Explorador de Soluciones

Al establecer Copy Local a false y recompilar la solución, nuestro archivo .xap no tendrá el ensamblado referenciado.

Archivo XAP sin el DLL

Ahora bien, si implementamos un método público en DemoAssembly que sea invocado desde la aplicación de Silverlight, la aplicación mandará una excepción al no poder localizar el ensamblado necesario para ejecutar esa línea.  A continuación se muestran los fragmentos de código de DemoAssembly.Demo y la Aplicación Silverlight.

DemoAssembly.Demo

Aplicación Silverlight

FileNotFoundException

Descarga bajo demanda y clase AssemblyPart

Ya que el objetivo de este artículo es mostrar cómo podemos descargar y cargar ensamblados bajo demanda lo que haremos será copiar el .dll al sitio de origen (fólder ClientBin en la aplicación Web muy probablemente).  Usaremos un objeto de tipo WebClient para poder descargar el archivo DemoAssembly.dll de manera asíncrona por medio de su método OpenReadyAsync() y posteriormente crearemos un ensamblado de manera dinámica para nuestra aplicación Silverlight.  De esta manera nos aseguramos que la anterior línea de código presentada funcione y no mande una excepción.

La clase AssemblyPart representa un ensamblado dentro de la aplicación Silverlight, y su método Load() nos permite cargar un ensamblado a través de un Stream en el mismo Application Domain.  El siguiente fragmento de código muestra la aplicación finalizada en donde podemos apreciar cómo primero se descarga el .dll del servidor y se crea el AssemblyPart para tenerlo disponible cuando se haga clic en el botón.

Resumen

La clase AssemblyPart nos permite cargar de manera dinámica un ensamblado y colocarlo en el Application Domain de nuestra aplicación Silverlight para su correcto uso.  Asimismo es necesario establecer la propiedad Copy Local a false para impedir que un ensamblado referenciado se empaquete dentro del archivo .xap.  Esta técnica nos permite crear aplicaciones de Silverlight más livianas y que hagan uso de ensamblados y recursos de manera dinámica.

Demo (Requiere el plugin de Silverlight 2)

Silverlight 3 Beta 1: Enlace con RelativeSource

Silverlight 3 Beta 1: Enlace con RelativeSource

Hace algunos días escribí acerca del Enlace entre Elementos, una de las nuevas características presentes en Silverlight 3 Beta 1 (tomadas de su hermano mayor WPF).  Para complementar ese artículo he decidido hablar por separado de RelativeSource: una propiedad que podemos encontrar en el markup extension Binding.  Esta propiedad en Silverlight soporta dos valores tal y como se describen a continuación:

Self

Cuando establecemos un Binding con RelativeSource=Self estamos indicando que el origen del enlace es el mismo elemento en donde lo estamos estableciendo.  El siguiente fragmento de código explica mejor este concepto:

En este ejemplo tenemos una Ellipse un Slider.  La propiedad Width de la Ellipse está enlazada con la propiedad Value del Slider, justo como lo vimos en este artículo.  Aquí el punto interesante es ver cómo la propiedad Height está enlazada a la propiedad Width de el elemento mismo.  Esto es logrado estableciendo la propiedad RelativeSource a Self, a través del markup extension {RelativeSource}.

TemplatedParent

El otro valor que podemos establecer en RelativeSource es TemplatedParent.  Esta opción indica que el valor lo tomará del control en donde estemos aplicando la plantilla en cuestión, por lo tanto esta opción solo es válida dentro de la declaración de una Platilla.  El siguiente código muestra la declaración de una nueva plantilla para un Botón, llamada ‘miEstilo’.  Dentro de esta Plantilla se declara un TextBlock el cual pone en su propiedad Text el valor de la propiedad Height del control en donde se está aplicando la Plantilla (botón ‘btn’):

Cabe mencionar que esta opción es similar a utlizar {TemplateBinding} dentro de la Plantilla.

Resumen

Las nuevas características de Enlace presentes en Silverlight 3 Beta 1 extienden la funcionalidad y abren nuevas oportunidades para el desarrollo de aplicaciones con esta plataforma.

Para ver una aplicación en vivo que demuestra los conceptos expuestos pueden revisarla aquí (el plugin de Silverlight 3 Beta 1 es requerido).

Web Casts: Silverlight 2 y 3 para Desarrolladores y Diseñadores

Curso gratis de Silverlight 3

Serie de tres Web Casts: Silverlight 2 y Silverlight 3 para Desarrolladores (y Diseñadores ;) )

SL3BetaPromo

¿Quieres saber qué tiene Silverlight para ti y tus aplicaciones?

¿Tienes dudas acerca de esta tecnología?

¿Quieres de una vez por todas adentrarte en esta tecnología de una manera rápida, práctica y divertida?

Los invito cordialmente a que asistan a una serie de Web Casts de entrenamiento gratuito acerca de Silverlight 2 y Silverlight 3 Beta 1.  En estos Web Casts platicaremos acerca de Silverlight como plataforma de desarrollo usando las nuevas características de la plataforma:  Silverlight 3 Beta 1 anunciado por Microsoft hace algunas semanas en el MIX09; aunque claro está, también utilizaremos Silverlight 2 para que aprecien lo que tienen a su alcance hoy en día!

Estos Web Casts son de unos 10 minutos de teoría y el resto de puro código, :)así que se los recomiendo ampliamente.

El entrenamiento es totalmente gratis, con una duración aproximada de 3 1/2 horas (sumando los tres días)

Fechas

11 al 13 de Mayo a las 5:00pm Hora de Guadalajara/Monterrey/Ciudad de México

Registro

http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032414027&EventCategory=2&culture=es-MX&CountryCode=MX

3 días… 3 horas…  Silverlight 3 :)

Me daría mucho gusto que estén presentes, así que los(as) espero!!!

UPDATE 20 de Mayo 2009

Los Web Casts los pueden descargar de las siguientes ligas:

Silverlight Tour Workshop – Guadalajara

El Curso que Ha Dado La Vuelta Al Mundo Regresa a Guadalajara

La próxima semana regresa el Silverlight Tour Workshop en Español a la tapatía ciudad de Guadalajara, Jalisco, México… y actualizado a Silverlight 3 Beta 1.  Si quieres aprender a desarrollar con Silverlight 2 y 3 este es el entrenamiento para ti!

El Silverlight Tour Workshop es un curso de capacitación en español de tres días de alta profundidad técnica acerca de Silverlight 2 y 3. El curso se imparte en varios idiomas en diferentes países en todo el Mundo.

Los lugares casi se agotan así que regístrate ya!!!

Silverlight 3 Beta 1: Enlace entre Elementos

Silverlight 3 Beta 1: Enlace entre Elementos

El enlace entre elementos (Element Binding), presente en WPF, es una de las nuevas características que podemos encontrar en Silverlight 3 Beta 1 y que nos brinda una mayor potencia al crear nuestras aplicaciones en esta plataforma, ya que permite hacer atado de propiedades (binding) de manera directa entre elementos, sin tener que utilizar code-behind o alguna clase intermediario que controle esta relación (similar a lo que sucede con un ViewModel en el patrón MVVM).

Propiedad ElementName

El enlace entre elementos es logrado a través de la propiedad ElementName de la clase Binding.  En esta propiedad indicamos el nombre del elemento al que nos queremos atar, y complementamos el atado usando Path para indicar el nombre de la propiedad a la que nos queremos atar.

El siguiente fragmento de código muestra una implementación sencilla de esta característica:

En el código podemos observar un rectángulo, el cual su propiedad Width está enlazada con la propiedad Value del Slider llamado slider.  La extensión Binding hace uso de Path y ElementName (de hecho, podríamos quitar la invocación de “Path=” ya que precisamente es la propiedad por default).

La siguiente figura muestra esta sencilla aplicación en ejecución:

Un buen ejemplo: Enlace entre datos para controles maestro – detalle

Un lugar donde es benéfico utilizar esta característica es en las aplicaciones que tengan controles que muestren datos maestro – detalle.  Tal es el caso por ejemplo de una lista de datos, que al darle clic nos despliegue el detalle de ese elemento seleccionado en diferentes tipos de controles.

Veamos el siguiente ejemplo: una aplicación que muestra en un ListBox una lista de personas, y al darle clic en alguna de ellas se muestra el resto de datos en controles específicos:

Típicamente con Silverlight 2 tendríamos que crear un manejador para el evento SelectionChanged del ListBox, obtener el elemento seleccionado y establecerlo como DataContext del contenedor de los controles del detalle, es decir, algo similar a esto:

Ahora con esta característica de Enlace o Atado entre Elementos en Silverlight 3 Beta 1 podemos establecer dicha relación de manera declarativa:

Como podrán observar, la propiedad DataContext se está enlazando al elemento seleccionado (propiedad SelectedItem) del ListBox.

Resumen

El Enlace entre Elementos o Element Binding, existente en WPF e incorporado en Silverlight 3 Beta 1 nos permite establecer relación entre elementos de manera declarativa, ahorrándonos código en el code-behind de nuestras aplicaciones logrando así código más sencillo, claro y sobre todo mantenible.  El código fuente del ejemplo lo pueden encontrar en la sección “contenido” de La Liga Silverlight.