El .net framework 3.0 ha sido liberado, y con el surgen 4 nuevas tecnologías:

  • Windows Communication Foundation
  • Windows Presentation Foundation
  • Windows Workflow Foundation
  • Windows CardSpace

Antes de ir a la práctica repasaré rápidamente algunos puntos importantes. WPF introduce XAML (Zamel), es un lenguaje basado en XML que nos permitirá definir el diseño gráfico de nuestros formularios.

Qué tiene XAML de interesante

Muchas cosas, nueva lista de controles que se agregan, nuevas capacidades de dibujar objetos 3D y crear animaciones, así como reproducir fácilmente multimedia en nuestros controles y mostrar documentos de forma rápida y fácil, como si esto fuera poco, todos los controles XAML pueden contener controles XAML.

Uno podría tener un listbox, con checkboxes y botones en las filas, o que cada fila fuese un combobox el cual en su lista de opciones puede tener radiobuttons. El cielo es el límite, o en su defecto, nuestra imaginación.

También contamos con una infinita variedad de propiedades para pintar y animar nuestros controles. Además de todo esto, existen distintas herramientas, una de ellas de Microsoft, orientadas a diseñadores gráficos que generan XAML.

Esto nos permite dejar al diseñador la responsabilidad de nuestra interfaz usuario, y que para ello utilice las mismas herramientas que utiliza para otro tipo de diseños sin necesidad de que este instale Visual Studio 2005. Una vez terminada la interface gráfica, el diseñador nos entregará los archivos XAML para ser incluidos en nuestro proyectos.

Un poco de práctica

Para seguir el ejemplo del artículo es necesario tener instalado:

  • Visual Studio 2005
  • Framework 3.0
  • Las extensiones de VS2005 para .net framework 3.0 (WCF & WPF)

Crear un proyecto en VS2005

Las extensiones no han creado nuevos tipos de proyectos de los cuales debemos elegir uno, seleccionaremos Windows Aplication (WPF). Podemos observar el form principal y el área de trabajo se divide en dos: una gráfica y otra de código.

Por defecto, en la parte superior aparece el designer y en la de abajo se ve el código XAML. Se puede trabajar con cualquiera de los dos modos o con ambos a la vez. Personalmente prefiero el designer para armar el layout del form utilizando el clásico Drag & Drop de controles sobre el mismo, y el panel con el código XAML para la configuración necesaria.

starup.jpg

Al principio esto cuesta ya que no conocemos los tags disponibles para cada control. Recomiendo con tiempo mirar todos los atributos de cada uno.

Hagamos algo sencillo, con la vista de designer, arrastremos un botón sobre el grid que aparece en el form. Automáticamente se puede observar que en el panel de XAML se escribe el código necesario (tag Button). Podemos entonces acceder a este panel y modificar el nombre del botón, el contenido, el tipo de letra, color de fondo, etc.

Hay algo que falta en estas extensions, es algo a lo que las herramientas de Microsoft, por lo menos desde que empecé con el VC++ 5.0, nos tienen (mal) acostumbrados, y es que al hacer doble clic sobre el botón en la vista de diseño, automáticamente se creaba en método handler que capturaría el evento clic del botón.

Esto no es así, no se si es por ser los extensions un beta pero no lo hace. Por esta razón es que nosotros debemos escribir el código necesario para obtener el mismo resultado. Para eso escribiremos el atributo “clic” del botón y le pondremos como valor el nombre de la función que implementará el handler (en mi caso SayHelloHandler).

A continuación debemos ir al codebehind del XAML (Window1.xaml.cs) y escribir el método en cuestión. Hay que tener en cuenta que el evento debe tener la firma del ClickEventHandler, esto significa que debe tomar dos parámetros, un ‘object’ y un ‘ClickEventArgs’. En este método implementaremos el despliegue de un MessageBox de la misma forma que lo venimos haciendo desde .net 1.0.

Compilemos, corramos la aplicación y listo, nuestra primer aplicación Windows Presentation Foundation está pronta. Pueden descargar el ejemplo en donde se ven algunos casos interesantes de los nuevos controles. Cualquier duda, sugerencia o comentario no duden en consultarme.

Referencias