TOC

This article has been localized into Spanish by the community.

Acerca de WPF:

WPF vs. WinForms

En el capítulo anterior, hablamos acerca de qué es WPF y un poquito acerca de WinForms. En este capítulo, trataré de comparar ambos, porque aunque sirven para el mismo propósito, hay MUCHAS diferencias entre ellos. Si nunca has trabajado con WinForms, y especialmente si WPF es tu primer framework de interfaz gráfica, puedes saltar este capítulo, pero si tienes interés en las diferencias entonces continua leyendo.

La diferencia más importante entre WinForms y WPF es el hecho de que mientras WinForms es simplemente una capa sobre los controles estándar de Windows (por ejemplo, un TextBox), WPF está construido desde cero y no depende de los controles estándar de Windows en casi todas las situaciones . Esto podría parecer una diferencia sutil, pero realmente no lo es, lo que definitivamente notará si alguna vez ha trabajado con un marco que depende de Win32 / WinAPI.

Un gran ejemplo de esto es un botón con una imagen y texto en él. Este no es un control estándar de Windows, por lo que WinForms no le ofrece esta posibilidad de inmediato. En su lugar, deberá dibujar la imagen usted mismo, implementar su propio botón que admita imágenes o utilizar un control de terceros. Con WPF, un botón puede contener cualquier cosa porque es esencialmente un borde con contenido y varios estados (por ejemplo, intacto, suspendido, presionado). El botón WPF es "sin aspecto", al igual que la mayoría de los otros controles WPF, lo que significa que puede contener un rango de otros controles dentro de él. ¿Quieres un botón con una imagen y algo de texto? ¡Simplemente coloque una imagen y un control TextBlock dentro del botón y listo! Simplemente no obtiene este tipo de flexibilidad de los controles estándar de WinForms, por lo que existe un gran mercado para implementaciones bastante simples de controles, como botones con imágenes, etc.

El inconveniente de esta flexibilidad, es que a veces tendrá que trabajar más duro para lograr algo que era muy fácil con WinForms, ya que éstos fueron creados para el escenario en el que lo necesita. Al menos así es como se siente al principio, donde te encuentras creando plantillas para hacer un ListView con una imagen y un texto muy bien alineado, algo que el ListViewItem de WinForms hace en una sola línea de código.

Esta fue solo una diferencia, pero a medida que trabajas con WPF, te darás cuenta de que, de hecho, es la razón subyacente de muchas de las otras diferencias: WPF simplemente está haciendo las cosas a su manera, para bien o para mal. Ya no estás obligado a hacer las cosas al estilo de Windows, pero para obtener este tipo de flexibilidad, pagas con un poco más de trabajo cuando realmente solo buscas hacer las cosas al estilo de Windows.

A continuación se muestra una lista completamente subjetiva de las ventajas clave para WPF y WinForms. Debería darte una mejor idea de lo que vas a hacer o lo que vas a encontrar

Ventajas de WPF

  • Es más nuevo y, por lo tanto, está más en consonancia con los estándares actuales
  • Microsoft lo está utilizando para muchas aplicaciones nuevas, por ejemplo, Visual Studio
  • Es más flexible, por lo que puede hacer más cosas sin tener que escribir o comprar nuevos controles
  • Cuando necesite utilizar controles de terceros, es probable que los desarrolladores de estos controles se enfoquen más en WPF porque es más reciente
  • XAML hace que sea fácil crear y editar su GUI, y permite que el trabajo se divida entre un diseñador (XAML) y un programador (C#, VB.net etc.)
  • Enlace de datos (Databinding), le permite obtener una separación más limpia de los datos y el diseño
  • Utiliza la aceleración de hardware para dibujar la GUI, para un mejor rendimiento
  • Permite realizar interfaces de usuario tanto para aplicaciones Windows como para aplicaciones web (Silverlight/XBAP)

Ventajas de WinForms

  • Tiene mas tiempo por lo que ha sido mas utilizado y probado
  • Ya hay muchos controles de empresas de terceros que puedes comprar o conseguir gratis
  • El diseñador en Visual Studio sigue siendo, en cuanto a la escritura, mejor para WinForms que para WPF, donde tendrá que hacer más trabajo usted mismo con WPF