
Desde que este proyecto empezó a andar, principios del año 2015, he intentado volcar todo mi conocimiento en diferentes materias. He recibido varios emails preguntando ¿ qué es WPF ? y ¿que ventajas tiene con respecto a otras tecnologías?. Uno de mis fuertes es la creación de aplicaciones de escritorio para Windows con WPF. Puedes encontrar varios artículos e incluso un podcast donde hablo exclusivamente de esta tecnología de Microsoft.
Por otra parte, puedes ver el curso del Campus donde desarrollamos una aplicación con esta tecnología. Lo hacemos paso a paso y desde el principio, para que nadie se pierda.
WPF es la abreviatura de Windows Presetation Foundation. Es una parte del framework de desarrollo .NET. Pero no una parte cualquiera, es la más grande de todas ellas. Abarca muchos conceptos desde interfaces de usuario con XAML hasta patrones de diseño como MVVM. De todo esto hablaré en el siguiente artículo.
Por último veremos las ventajas que tiene con respecto a otras alternativas.
¿ Qué es WPF ?
Lo primero es aclarar el concepto de WPF. Una respuesta corta sería una API para crear interfaces de usuario (UI) para aplicaciones de escritorio con el framework .NET.
Si profundizamos más, ¿ qué es WPF ?, WPF es la abreviación de Windows Presentation Foundation. En términos de programación, es una serie de ensamblados y herramientas del framework .NET. Está destinado a proporcionar una API (Interfaz de programación de aplicaciones del inglés Application Programming Interface) para crear interfaces de usuario enriquecidas y sofisticadas para Windows. Está soportado desde Windows XP hasta la última versión de Windows, la versión 10.
Algo que siempre me ha encantado es que combina diferentes plataformas de desarrollo. Coge cosas del desarrollo web, de las aplicaciones de Internet enriquecidas o RIA (del inglés Rich Internet Applications) y por supuesto del desarrollo de aplicaciones para Windows.
Del desarrollo web hereda la utilización de un lenguaje de meta etiquetas para el desarrollo de la interfaz gráfica UI y los estilos. De las aplicaciones RIA hereda los gráficos vectoriales, animaciones y el soporte para multimedia.
Además de las aportaciones de otras plataformas, WPF incorpora nuevas funcionales que hacen que su predecesor, Windows Forms, se quede anticuado. Facetas como soporte para 3D, tipografía avanzada y documentos similares al PDF.
Características principales de WPF
Veamos un resumen de las características más importantes que nos aporta WPF.
Interfaz gráfica declarativa
WPF permite crear interfaces de usuario utilizando un lenguaje de marcado llamado XAML. Si has trabajado alguna vez con HTML, te resultará muy familiar los conceptos de este lenguaje. XAML es un lenguaje más potente que el propio HTML.
Visual Studio, así como los miembros de la familia de entornos de desarrollo de Microsoft como Blend, están preparados para generar código XAML de forma nativa.
En Visual Studio tenemos la vista diseño al estilo de las aplicaciones Windows Forms. La diferencia es que hay un editor donde puedes escribir el código XAML directamente.

Una de las características más importantes que aporta este lenguaje de programación es que, XAML proporciona un medio para que los diseñadores puedan colaborar estrechamente en la creación de aplicaciones de este tipo.
Diseño dinámico
La organización de los diferentes componentes de una aplicación, puede ser muy complicado. Si ha esto le añadimos las diferentes resoluciones y características de una pantalla de un usuario, la cosa se complica más.
WPF aporta «inteligencia» cuando se producen cambios de tamaño de pantalla y ajustes de los componentes. Todo dependerá de cómo se haya definido el diseño.
Gráficos basados en vectores
Los gráficos en WPF están basados en vectores. Al contrario que los gráficos basados en imágenes rasterizadas, los gráficos basados en vectores pueden ser escalados sin deformaciones.
Otra ventaja es que este tipo de gráficos ocupan menos espacio al ser almacenados, optimizando así el espacio. Esto no quiere decir que WPF no utilice imágenes rasterizadas, tienes la posibilidad de trabajar de las dos formas.
Para la interfaz gráfica, utilizar imágenes vectoriales te dará ciertas ventajas. Las aplicaciones creadas con WPF que utilicen gráficos vectoriales podrán ser escaladas sin perder calidad.
Plantillas
En WPF podemos crear elementos reutilizables para la interfaz gráfica. Existen dos tipos de plantillas en WPF: plantillas de control y plantillas de datos.
Las plantillas de control (control templates en inglés) permiten redefinir el aspecto visual de un control. Un ejemplo sería poder cambiar desde un único sitio, la apariencia de todos los botones de la aplicación. Esto da también mucha ventaja a los diseñadores ya que se separa en todo momento la parte gráfica de la parte de programación.
Las plantillas de datos (data templates en inglés) son similares. Estas plantillas definen la manera en que los datos son mostrados. Podemos asociar una plantilla a una entidad o clase de nuestra aplicación. Siempre que se muestre ese tipo de dato en la aplicación, utilizará la misma plantilla.
Binding
Quizás una de las facetas o funcionalidades más interesantes que nos aporta WPF sea el binding. No es una novedad que incorpore WPF, con Windows Forms ya podíamos utilizar el databinding, pero si que es una tecnología que lo engloba todo en la misma API. No depende de terceros para su implementación.
Gracias a la integración que nos ofrece WPF con el binding, es muy sencillo utilizar el patrón de diseño MVC (Modelo Vista Controlador). Más concreto se utiliza una variante que se llama MVVM (ModelView-ViewModel) también utilizado por el más que conocido framework de JavaScript AngularJS.
Estilos
Donde realmente vemos grandes diferencias es cuando intentamos hacer una aplicación enfocada en el diseño. Los estilos en WPF son muy parecidos a las hojas de estilos en cascada, CSS, para HTML.
En este caso los estilos son más potentes que el CSS. Podemos manejar cualquier característica gráfica que te imagines, márgenes, espacios, colores, dimensiones y muchos más.
Esto nos permitirá reutilizar los estilos en los diferentes controles y plantillas de la aplicación. La mayor ventaja será el tiempo que nos ahorramos a la hora de cambiar el aspecto visual.
DirectX vs GDI
Mientras que su predecesor está basado en la interfaz de diseño de gráficos GDI (del inglés Graphics Design Interface), WPF se basa en DirectX. Esta API esta enfocada en el desarrollo de multimedia y más en particular en la programación de juegos. Por lo tanto, con WPF podemos crear ciertos trucos visuales que son imposibles de hacer con Windows Forms.
Además de las ventajas que todo lo anterior supone, podemos hacer uso de la aceleración de gráficos por hardware siempre y cuando esté disponible.
WPF vs otras opciones
Ya hemos visto ¿ qué es WPF ? ahora veremos las ventajas que tiene con respecto a otras opciones.
Windows Forms
Windows Forms es el predecesor de WPF. Esto le otorga cierta ventaja ya que se trata de una librería madura, gracias al tiempo que lleva en desarrollo. Además encontramos multitud de librerías externas. WPF está creciendo mucho en la actualidad y prácticamente encontramos las mismas librerías externas y muchas más nuevas que otorgan nuevas funcionalidades a WPF, tanto en diseño como en prestaciones.
Aplicaciones web
Cada vez más, encontramos aplicaciones web como sustituto de aplicaciones de escritorio, incluso aplicaciones embebidas. Esto otorga cierta ventaja con respecto a WPF, son aplicaciones multiplataforma. La gran desventaja es la integración con el sistema operativo. WPF tiene total compatibilidad en este aspecto.
Otra desventaja de las aplicaciones web es la necesidad de software externo como puede ser un servidor web. Esto implica algo más de complejidad para los desarrolladores.
Dependerá de cada caso utilizar una tecnología u otra.
Java
Con Java tenemos la posibilidad de crear aplicaciones de escritorio para Windows. Gracias a la API Swing, resulta sencillo desarrollar aplicaciones de este tipo. Podemos decir que las ventajas e inconvenientes serían los mismos que para aplicaciones con Windows Forms pero además, debemos añadir el inconveniente de la integración con el sistema operativo.
Conclusión
Hemos visto ¿ qué es WPF ? a grandes rasgos, sus características, ventajas e inconvenientes. Utilizar una tecnología u otra dependerá del tipo de proyecto pero, sin duda alguna, para aplicaciones de escritorio para Windows, es la mejor opción.