Pregunta

La mayoría de las restricciones y trucos con los formularios de Windows son comunes a la mayoría de los programadores.Pero desde .NET 3.0 también está disponible WPF, la Windows Presentation Foundation.Se dice que puedes hacer que las "aplicaciones atractivas" sean más fáciles con él y con .NET 3.5 SP1 obtuvo un buen aumento de velocidad de ejecución.

Pero, por otro lado, muchas cosas funcionan de manera diferente con WPF.No diré que sea más difícil pero hay que aprender "todo" desde cero.

Mi pregunta:¿Vale la pena dedicar este tiempo extra cuando tienes que crear una nueva GUI y no hay presión de tiempo para el proyecto?

¿Fue útil?

Solución

WPF te permite hacer cosas increíbles y ME ENCANTA...pero siempre me siento obligado a matizar mis recomendaciones, cada vez que los desarrolladores me preguntan si creo que deberían pasar a la nueva tecnología.

¿Están sus desarrolladores dispuestos (preferiblemente, EAGER) a dedicar el tiempo necesario para aprender a utilizar WPF de forma eficaz?Nunca hubiera pensado decir esto sobre MFC, Windows Forms o incluso DirectX no administrado, pero probablemente NO quieras que un equipo intente "captar" WPF en el transcurso de un desarrollo normal.ciclo para un producto de envío!

¿Al menos uno o dos de sus desarrolladores tienen alguna sensibilidad de diseño y las personas con autoridad de diseño final tienen una comprensión decente de los problemas de desarrollo, para que pueda aprovechar las capacidades de WPF para crear algo que sea realmente MEJOR, en lugar de simplemente más "colorido"? , con animación gratuita?

¿Algún porcentaje de su base de clientes objetivo utiliza conjuntos de chips de gráficos integrados que tal vez no admitan las funciones que estaba planeando, o todavía ejecutan Windows 2000, lo que los eliminaría como clientes por completo?Algunas personas también preguntarían si a sus clientes realmente les IMPORTAN las imágenes mejoradas, pero, después de haber vivido los debates internos de la empresa "A nuestros clientes comerciales no les importan los colores ni las imágenes" a principios de los años 90, sé que las soluciones bien diseñadas de sus competidores HARÁ que se preocupen, y la verdadera pregunta es si las condiciones son las adecuadas para permitirle ofrecer algo que haga que se preocupen AHORA.

¿El proyecto implica un desarrollo inicial, al menos para la capa de presentación, para evitar la complejidad adicional de intentar conectarse a un andamiaje heredado incompatible (la interoperabilidad con Win Forms NO es perfecta)?

¿Puede su gerente aceptar (o distraerse de notar) una CAÍDA significativa en la productividad de los desarrolladores durante cuatro a seis meses?

Este último problema se debe a lo que me gusta considerar como la naturaleza "FizzBin" de WPF, con diez formas diferentes de implementar cualquier tarea, y ninguna razón aparente para preferir un enfoque a otro, y poca orientación disponible para ayudarle a realizar una elección.No sólo las deficiencias de cualquier elección que haga se aclararán mucho más adelante en el proyecto, sino que prácticamente se garantiza que cada desarrollador de su proyecto adoptará un enfoque diferente, lo que resultará en un importante dolor de cabeza de mantenimiento.Lo más frustrante de todo son las inconsistencias que constantemente te hacen tropezar mientras intentas aprender el marco.

Puede encontrar información más detallada relacionada con WPF en una entrada de mi blog:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

Otros consejos

Después de tres meses de intentar lograr un acuerdo línea de negocio (LOB) en WPF, llegué al punto de considerar volver a Windows Forms para mi proyecto y, al investigar las opiniones de otras personas, encontré este hilo...

Sí, WPF es una tecnología brillante y tiene beneficios que van mucho más allá de la mera atracción visual...las capacidades de creación de plantillas y vinculación son excelentes ejemplos.Todo el modelo de objetos ofrece más flexibilidad y posibilidades más amplias.Sin embargo, eso no la convierte en la plataforma de facto para futuras aplicaciones LOB.

Los "problemas" que resuelve WPF en términos de separar la GUI de la lógica empresarial no son problemas que no puedan resolverse fácilmente en Windows Forms simplemente comenzando con la arquitectura y la mentalidad adecuadas.Incluso las capacidades de enlace de ruta de objeto de WPF se pueden reproducir en Windows Forms con algunas clases auxiliares muy simples.Las capacidades de plantilla de datos de WPF son muy buenas, pero nuevamente, no son nada que no puedas simular en Windows Forms en esas raras ocasiones en las que no sabes en absoluto exactamente qué objetos vas a representar en una parte determinada de la pantalla.

Donde Windows Forms avanza es en términos de madurez.No puedes encontrar un gato muerto en Google sin visitar algún blog donde alguien haya resuelto un problema de Windows Forms por ti.WPF, por otro lado, tiene comparativamente menos recursos de aprendizaje disponibles, menos controles personalizados disponibles y no se han resuelto muchos de sus problemas iniciales.

El punto culminante a la hora de tomar una decisión entre WPF y Windows Forms tiene que ser la madurez del entorno de desarrollo.Los editores de Windows Forms son ingeniosos, responsivos e intuitivos.Los comentarios sobre los errores le llegan instantáneamente, las soluciones suelen ser obvias y el ciclo de compilación->depuración->edición en Windows Forms es muy rápido.

Las aplicaciones WPF, por otro lado, tienen un soporte de tiempo de diseño comparativamente patético, con la vista de diseño demasiado lista para acobardarse ante el primer error, lo que a menudo requiere una compilación del proyecto después de la corrección antes de que el diseñador esté dispuesto a intervenir. de nuevo.Es posible que tampoco se admita arrastrar y soltar componentes desde la caja de herramientas, dada la amplia gama de circunstancias bajo las cuales no funciona en absoluto o produce resultados completamente poco intuitivos.A pesar de la promesa de WpfToolkit, todavía no existe un DataGrid utilizable para WPF que proporcione algún tipo de rendimiento razonable o facilidad de diseño.

La depuración de aplicaciones WPF es un poco como la viejo Paradigma de depuración de ASP.NET...golpear F5 -> esperar -> iniciar -> error -> detener -> corregir -> presionar F5 -> esperar -> iniciar -> error -> gemir -> detener -> arreglar -> presionar F5....Todo el XAML que ejecuta su programa está bloqueado y rastrear problemas específicos de XAML suele ser tedioso.

La conclusión, en pocas palabras, es que las herramientas de desarrollo para Windows Forms le permitirán ejecutar interfaces en una fracción del tiempo de una aplicación WPF... especialmente si está creando cuadrículas de detalles maestros o interfaces similares a hojas de cálculo, que tienen la mayoría de LOB.Con Windows Forms, comienza con el 90% del trabajo ya hecho.

Soy un gran admirador de la arquitectura WPF.Solo desearía que el conjunto de herramientas en tiempo de diseño no pareciera una compilación de depuración pre-alfa.


Editar:Esta respuesta se publicó sobre .NET 3.5 + Visual Studio 2008, pero .NET 4.0 con Visual Studio 2010 viene con una cuadrícula de datos WPF.Si bien se han realizado muchas mejoras en la nueva experiencia de desarrollo de WPF, mi respuesta aquí permanece sin cambios y me gustaría agregar la siguiente sugerencia:

Si tienes prisa por hacer RAD desarrollo, opte por Windows Forms.Si está buscando producir una aplicación de línea de negocio multiusuario, bien diseñada, mantenible, escalable, amigable con los recursos, considere ASP.NET MVC + HTML 5 + jQuery...Mis proyectos con estas tecnologías han dado como resultado mejores resultados, más rápido, para mis clientes.MVC ofrece las mismas plantillas que WPF y jQuery permite animaciones e interacciones complejas.Más importante aún, una solución ASP.NET MVC + jQuery no requiere que los usuarios finales tengan escritorios modernos con hardware de gráficos decente.

Llevo siete meses usando WPF en lo que ahora se ha convertido en un sistema central para mi cliente y me gustaría compartir algunas ideas más con usted sobre la experiencia de aprender y usar WPF como una plataforma de presentación de línea de negocios.

En general, los comentarios que hice arriba siguen siendo válidos...El soporte en tiempo de diseño para WPF aún no está aquí.Si tiene mucha prisa por sacar una aplicación de cliente enriquecido, opte por Windows Forms.Período.Microsoft no tiene prisa por descontinuar la plataforma GDI/Windows Forms, por lo que puede contar con un buen soporte durante bastante tiempo en el futuro.

WPF no es fácil de dominar, pero ahí no debería ser donde dejes tu decisión sobre si invertir o no tu tiempo y energía en aprender WPF.A pesar de su actual falta de madurez, WPF se basa en algunos conceptos modernos y útiles.

En WPF, por ejemplo, su inversión en objetos comerciales bien escritos con una lógica de validación sólida es una inversión sólida.A diferencia de Windows Forms, el enlace de datos de WPF está repleto de características que permiten que los controles de la interfaz reaccionen ante entradas no válidas del usuario. sin escribir código GUI para detectar esos errores.Esto es valioso.

Las capacidades de diseño y creación de plantillas en WPF también han demostrado ser valiosas.A pesar de la idea errónea común de que el único uso del diseño y las plantillas es crear atractivos visuales en la pantalla, la verdad es que estas características simplifican significativamente la codificación de una interfaz de usuario que brinda una rica retroalimentación, como botones que se desactivan/activan a sí mismos en función de el estado de la capa de lógica empresarial subyacente, o información sobre herramientas que encuentra inteligentemente su texto en función del estado del objeto debajo del cursor, etc.

Todo esto se suma a características increíblemente valiosas para "nada sofisticado". aplicaciones de negocios, simplemente porque facilitan mantener la interfaz congruente con los datos subyacentes.

En una palabra:

  • En los formularios de Windows, diseña su interfaz de usuario, luego escriba código para impulsar esa interfaz de usuario, que generalmente también incluye código para impulsar sus objetos de datos.
  • En WPF usted invierte en la capa empresarial que impulsa sus objetos de datos y luego diseña una interfaz que escucha a sus objetos de datos.

Es una diferencia aparentemente sutil, pero marca una gran diferencia en tu capacidad para reutilizar el código...lo que plantea la pregunta:"¿La pregunta entre Windows Forms y WPF es realmente una decisión de inversión?"

(Este parece haberse convertido en mi hilo favorito).

¿Existen razones convincentes para utilizar WPF?

¡Absolutamente!¡WPF es absolutamente increíble!Será un gran beneficio para prácticamente cualquier proyecto porque tiene muchas características y capacidades de las que carece Windows Forms.

Para las aplicaciones empresariales, los mayores beneficios serán:

  • El fantástico enlace de datos y las plantillas marcan la mayor diferencia.Una vez que se implementa un modelo de datos decente, solo se necesitan unos pocos clics para crear una plantilla de datos y usarla. Mezcla de expresiones para configurar exactamente cómo se verá su objeto usando arrastrar y soltar.Y vincularse a cosas como el color o la forma es trivial.
  • El diseño de la pantalla es increíblemente flexible.No solo todo en WPF puede ajustarse suavemente al tamaño del contenedor y los cambios de forma, sino que los elementos pueden ampliarse y rotarse trivialmente, e incluso extenderse fuera de su marco contenedor.
  • Los objetos comunes se pueden presentar de la forma que desee, pueden tener fácilmente diferentes presentaciones en diferentes pantallas, pueden compartir presentaciones y pueden adaptar su presentación a los cambios en los valores de los datos.
  • Si necesita imprimir, renderizarlo en la impresora es trivial.Bien configurado, WPF hace Reportes de cristal o Servicios de informes de SQL Server (SSRS) parecen un juguete para niños.
  • Su interfaz de usuario se verá y se sentirá mucho más dinámica, e incluirá características interesantes como botones que se animan cuando pasa el mouse sobre ellos.

Para utilidades y juegos, otras ventajas pasan a primer plano:

  • Puede agregar fácilmente formas, líneas y dibujos arbitrarios a su aplicación sin utilizar un editor externo.Cada componente de estos puede estar vinculado a datos y animado, o controlado por código.En Windows Forms, normalmente solo tienes que importar un mapa de bits y usarlo tal cual, a menos que quieras trabajar mucho.
  • ¡Las animaciones son geniales!Los usuarios quedarán realmente impresionados, siempre y cuando no se exceda.También pueden ayudar a las personas a ver lo que está sucediendo y reducir la necesidad de resaltar.Por ejemplo, al arrastrar un objeto, puedes animar el objetivo para mostrar lo que sucederá si lo sueltas.
  • Colores, rellenos degradados, pinceles, fuentes elegantes, rotación de cualquier objeto, pinceles de mosaicos, etc.Todo lo que quieras gráficamente es tuyo con solo pedirlo.
  • Increíblemente personalizable.Necesitaba dibujar vías de ferrocarril para una aplicación, para poder dejar caer un tren sobre ellas.Un par de horas más tarde tenía vías de ferrocarril que podía dibujar en cualquier lugar de la pantalla usando Curvas de Bézier, y se unirían y cambiarían automáticamente.

La conclusión es que cualquier GUI de tamaño significativo que pueda crear en Windows Forms se puede crear en WPF con un tercio del esfuerzo (o menos) y verse muchísimo mejor.

¿WPF requiere más recursos (RAM en particular)?

Paga un precio en comparación con Windows Forms, pero es pequeño.

  • La RAM puede subir o bajar dependiendo de su implementación.WPF almacena sus datos de manera más eficiente, por lo que los objetos individuales son más pequeños, pero tiende a haber más objetos en WPF que en Windows Forms, por lo que esto se equilibra y cualquiera de los dos puede salir adelante.
  • La CPU aumentará en comparación con Windows Forms.En mi experiencia, la actualización real de los objetos WPF en pantalla requiere aproximadamente el doble de CPU que el procesamiento normal de Windows Forms.Si su aplicación pasa la mayor parte del tiempo actualizando la pantalla, es posible que WPF no sea para usted.Pero en ese caso probablemente tampoco estés usando Windows Forms:La mayoría de los juegos serios se escriben directamente en DirectX.
  • El uso del disco será ligeramente menor para WPF porque requiere mucho menos código que Windows Forms.Los datos tendrán el mismo tamaño, por supuesto.

Una nota más sobre el uso de la CPU:Las animaciones y transformaciones (movimiento, traducción, etc.) son en realidad más eficientes en WPF que en Windows Forms debido a su almacenamiento en modo retenido.Lo más lento es el ascenso inicial de los objetos hasta allí.

Gastos generales de mantenimiento

WPF es un enorme gane a Windows Forms cuando se trata de mantenimiento.Dado que todo se hace con 1/5 de la cantidad de código que antes, hay 1/5 de mucho que mantener.Además, todo el material repetitivo desapareció para que puedas concentrarte en el código que realmente hace el trabajo.

Beneficios de XAML

XAML es el núcleo de WPF.Aunque WPF se puede utilizar sin XAML, XAML lo hace increíblemente fácil de usar.XAML tiene la capacidad de HTML para especificar fácilmente una interfaz de usuario, pero sus etiquetas integradas son mucho más poderosas y usted puede definir fácilmente las suyas propias.(De hecho, es normal que así sea).

Algunas ventajas específicas de XAML:

  • Toda su interfaz de usuario está definida en un archivo de texto que es fácil de leer y manipular, tanto para los usuarios como para las herramientas.
  • MarkupExtensions permite especificar Bindings de forma clara y sencilla
  • Los convertidores de tipos permiten especificar fácilmente propiedades con tipos complejos.Por ejemplo, puede decir Brush="Green" o puede especificar un pincel de degradado radial con tres paradas.
  • Puedes crear tus propios elementos.
  • Puede aprovechar fácilmente las poderosas "propiedades adjuntas" de WPF

Otras ideas

Soñé con algo como WPF durante muchos años.Mucha gente ha implementado partes de esta funcionalidad, pero tenerlo todo en un solo lugar y a ese precio ($0) es increíble.

WPF es un gran cambio de paradigma con respecto a Windows Forms y llevará algún tiempo acostumbrarse, pero el tiempo dedicado a aprenderlo se amortizará con creces.

WPF todavía tiene algunos defectos incluso cinco años después, pero su poder te dejará boquiabierto una vez que lo experimentes.Si alguien intenta arrastrarte de regreso a Windows Forms, solo irás pataleando y gritando.

Consejos:- Obtenga una copia de Expression Blend para el desarrollo - Edite XAML a mano ocasionalmente - no se rinda cuando parece extraño al principio

WPF requiere Windows Vista o Windows XP SP2, lo cual no es un requisito oneroso, pero sí relevante.Si desea ejecutar Windows 2000 (lo que algunas personas todavía hacen), entonces WPF no funcionará para usted.

WPF también es una tecnología más nueva y no está tan probada como Windows Forms, por lo que puede elegir Windows Forms como una opción menos riesgosa, especialmente para aplicaciones más grandes.

Dicho esto, sí, WPF es el futuro.Visual Studio 2010 se está reescribiendo en WPF, que probablemente será la aplicación WPF más grande hasta la fecha y también será una prueba real para la tecnología.

Obviamente, las aplicaciones heredadas de Windows Forms serían otra situación en la que sería la elección correcta.

Como han dicho otros, existen ventajas y desventajas en cualquier sentido.Las ventajas de WPF, como han dicho otros, incluyen:

  • La capacidad de crear UI muy ricas. relativamente fácilmente.
  • Animación y efectos especiales más sencillos.
  • Escalabilidad inherente (use la herramienta de lupa de Windows Vista en una aplicación WPF y en una aplicación de Windows Forms:Tenga en cuenta que en la aplicación WPF, todo el arte vectorial se escala maravillosamente)
  • (ALERTA DE OPINIÓN) Siento que es "más fácil" hacer sistemas orientados a documentos en WPF

Sin embargo, WPF tiene desventajas, donde Windows Forms ocupa el primer lugar:

  • El conjunto de controles integrados de WPF es mucho más limitado que el de Windows Forms.
  • Hay mayor soporte en el espacio de control de terceros para Windows Forms.(Eso está cambiando, por supuesto, pero piénselo:Windows Forms existe desde 2001;WPF solo unos pocos años.Con el tiempo, Windows Forms tiene mayor apoyo en la comunidad.)
  • La mayoría de los desarrolladores ya conocen Windows Forms;WPF proporciona una nueva curva de aprendizaje

Finalmente, tenga en cuenta que puede crear interfaces de usuario excelentes, atractivas y atractivas con cualquiera de las herramientas, si hace el trabajo (o utiliza las herramientas de terceros adecuadas).Al fin y al cabo, ninguno de los dos es necesariamente mejor en todas las circunstancias.Utilice lo que le parezca adecuado para el proyecto.

El modelo de programación para WPF es más abierto y flexible que Windows Forms, pero al igual que ASP.NET MVC, requiere un poco más de disciplina en términos de implementar correctamente los patrones Model-View-ViewModel.

Mi primer LOB La aplicación con WPF terminó siendo un completo fracaso, porque consumía recursos y detuvo las computadoras portátiles de gama muy baja de mi usuario final...y esto se debió en última instancia a que acabo de ingresar con WPF + LINQ a SQL y esperaba un buen resultado...y aquí es donde WPF difiere tan fuertemente de Windows Forms...En Windows Forms, puedes salirte con la tuya con ese tipo de cosas.WPF consume muchos más recursos que Windows Forms, y si no diseña su aplicación para que sea eficiente, terminará con un gorila de 800 libras.

No evites WPF...explorarlo.Pero tenga en cuenta que los pecados aceptables de la codificación de Windows Forms no producirán buenos resultados en WPF.Son motores fundamentalmente diferentes, que se prestan a patrones de codificación fundamentalmente diferentes.

Ultima palabra:Si sigue adelante con WPF, familiarícese con la virtualización de datos para usar con listas y cuadrículas.Lo que es un ListItem o GridCell simple vinculado a datos termina siendo un gráfico de objetos visual y lógico considerable en WPF, y si no aprende a virtualizar, su aplicación no funcionará bien en grandes conjuntos de datos.

Hay una curva de aprendizaje muy pronunciada para WPF y le recomiendo que obtenga primero los libros obvios (Adán Natán, Vende/Griffiths, yChris Anderson) y blogs (José Smith, etc.).Simplemente prepárese para ello y asegúrese de que su proyecto le permita tener tiempo para aprender WPF.

Además de aprender la tecnología, dedique algún tiempo a aprender los patrones utilizados para construir aplicaciones WPF. Modelo Ver Ver Modelo (MVVM) parece ser el que ha ganado una gran aceptación.

Personalmente, creo que WPF vale la pena, pero ten cuidado.También tenga en cuenta que restringe efectivamente a sus usuarios a Windows XP SP2+ y Windows Vista.Hemos tomado esa decisión, pero es posible que usted tenga algunos requisitos diferentes.

Ambas tecnologías tienen sus pros y sus contras.En una aplicación grande con una interfaz de usuario "clásica", usaría Windows Forms.En una aplicación que requiere una interfaz de usuario rica (diseño, animaciones, cambio de interfaz de usuario), elegiría WPF.Por favor revisa el artículo WPF vs.Formularios de Windows comparando WPF y Windows Forms.

Además de la flexibilidad en el diseño de la interfaz de usuario, WPF tiene algunas ventajas técnicas:

1.) WPF no depende de objetos GDI. Bueno, creo que usa 2 objetos GDI para la instancia de la ventana en sí, pero eso es prácticamente nada.He estado involucrado hasta cierto punto en una aplicación interna de Windows Forms muy grande.La gente de nuestra oficina a veces ejecuta 3 o 4 instancias simultáneamente.El problema es que frecuentemente alcanzan el límite de 10.000 objetos GDI inherente a Windows 2000, XP y Vista.Cuando eso sucede, todo el sistema operativo deja de responder y comenzarás a ver artefactos visuales.La única forma de solucionarlo es cerrar las aplicaciones.

2.) WPF utiliza la GPU. La capacidad de WPF para descargar parte del procesamiento de la interfaz de usuario a la GPU es brillante.Sólo espero que este aspecto mejore con el tiempo.Como antiguo aficionado a la programación OpenGL, puedo apreciar la potencia que proviene de la GPU.Quiero decir, mi tarjeta de video de $100 tiene 112 núcleos funcionando a 1,5 GHz cada uno (y eso no es lo mejor de ninguna manera).Ese tipo de potencia de procesamiento paralelo puede avergonzar a cualquier CPU de cuatro núcleos.

Sin embargo, WPF es todavía bastante nuevo.No se ejecutará en Windows 2000.Y, de hecho, una aplicación WPF puede tardar en iniciarse después de un nuevo reinicio.De todo esto hablo en mi blog:http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

Creo que vale la pena aprender WPF.Una vez que esté al día, el trabajo de diseño en sus formularios es mucho más fácil en mi humilde opinión.No me preocuparía tanto por las cosas "sexys".La mayor parte de esto es sólo una moda pasajera.Puede crear aplicaciones de estilo Winforms "normales" de forma muy rápida y sencilla en WPF.

En mi opinión, todo el concepto se presta a un diseño más sencillo.

No estoy de acuerdo con algunas de las respuestas aquí.WPF es muy adecuado para línea de negocio (LOB) aplicaciones.(El cliente LOB de diseño de rana es el mejor ejemplo).Y además de todas las posibilidades para que su interfaz de usuario sea atractiva (lo cual no es necesario en aplicaciones comerciales), WPF ofrece mucho más para usted.

Las funciones de enlace de datos y creación de plantillas son simplemente superiores a las de Windows Forms.También ofrece una forma mucho mejor de separar el código y la presentación.Hemos utilizado WPF con éxito para aplicaciones de 2 LOB en equipos con no más de 2 o 3 desarrolladores.

El mayor problema al que se enfrentará es probablemente la pronunciada curva de aprendizaje de WPF (en comparación con Windows Forms), que disminuirá la velocidad de desarrollo entre los desarrolladores que no están acostumbrados a WPF.

Actualmente estamos reescribiendo nuestra aplicación en WPF desde Windows Forms.Sí, hay una curva de aprendizaje pronunciada y hay que "volver a aprender" algunas cosas, pero vale la pena.Y combinado con WCF, descubrimos que estamos escribiendo menos código, más rápido y más sólido que nunca.

Sigue así por un tiempo, lee. El libro de Adam Nathan., y consulte la biblioteca cada vez mayor de controles de terceros como los de Telerik y Componente uno.Un aspecto negativo, en mi opinión, es que la herramienta de diseño, Mezcla de expresiones, es muy incómodo de usar.La última versión aún está en versión beta, pero aquellos de nosotros que hemos usado Visual Studio durante años no nos parece bien.Sí, es principalmente para diseñadores, pero algunas cosas simplemente no se pueden hacer en Visual Studio.

Considere WPF si el diseño de la interfaz es importante para usted, porque WPF puede ofrecer una mejor experiencia de interfaz de usuario.Pero Windows Forms tiene de su lado los años de evolución, por lo que se ha demostrado que funciona y puedes encontrar muchos programadores versados ​​en esa plataforma.

Además, la portabilidad puede ser un problema, WPF solo funciona con Windows XP SP2 y versiones posteriores.

Además, WPF tiene una curva de aprendizaje pronunciada, lo que significa que no es fácil ofrecer un producto de calidad sin tener experiencia específica en WPF.

Bueno, una respuesta es "cuando tienes que soportar 1.1 o 2.0", ya que WPF es parte de .NET 3.0.Existen limitaciones conocidas del sistema operativo para WPF y existe un problema de habilidades obvio:Si tiene un equipo de desarrolladores que conocen Winforms, entonces puede ser más fácil generar un código sólido. con formas win.Sin embargo, si está escribiendo mucho código de interfaz de usuario, probablemente valga la pena comenzar a utilizar WPF en algún momento.

WPF también tiene mucho en común con Silverlight, por lo que tiene beneficios transferibles.

WPF viene con muchas ventajas, como excelentes características de enlace de datos, separación de preocupaciones, separación de diseño y lógica, etc.

Como desarrollador, disfruto la capacidad de definir mi interfaz de usuario usando XAML en lugar de estar vinculado al diseñador de formularios de Windows y me siento bien sabiendo que puedo contar con otro diseñador para que mi aplicación se vea bien.

Personalmente, no me importa las versiones más antiguas de Windows no son compatibles, pero uno de los grandes problemas con WPF es que no es (actualmente/nunca) compatible con Mono (http://www.mono-project.com) para que las aplicaciones WPF no se ejecuten en Mac OS o Linux.(Aunque las aplicaciones Silverlight lo harán).

Si tienes el tiempo y los recursos para invertir en aprender WPF, ¡hazlo!Incluso si va a escribir aplicaciones Silverlight para admitir múltiples sistemas operativos.

Si necesita que las aplicaciones de escritorio se ejecuten en varios sistemas operativos, utilice SWF.

Hay muchas diferencias.Nos encantó WPF por:

  1. El estilo declarativo de programación.
  2. Animaciones y transiciones de estado.
  3. Expression Blend es una gran herramienta
  4. Buen soporte de estilo.

Sin embargo, nos quedamos con Windows Forms porque:

  1. El tiempo extra que se tarda en un desarrollador aprender WPF cuando ya conoce los formularios de Windows.
  2. WPF no se ejecutará en Windows 2000 o más bajo.

La consideración más importante al decidir cuál usar es considerar qué .NET Framework tiene instalado su público objetivo.Encuentro que más personas tienen versiones inferiores de .NET Framework que solo admiten Windows Forms, pero esa es sólo mi experiencia personal.

Las ventajas de WPF es que es mucho más fácil crear GUI atractivas con controles y animaciones personalizados.WPF también ayuda a separar aún más las capas lógica y de presentación.Si tiene diseñadores, le permite asignar el 95% de este trabajo a no codificadores y permite a los codificadores trabajar en la lógica.Las desventajas son los costos de software para Expressions Blend y la falta de que cualquiera de las herramientas de creación de perfiles de código de Visual Studio funcione bien, ya que tienden a quedar atrapadas en las llamadas de marcos al intentar representar XAML.Estoy seguro de que hay otros, pero estos fueron los únicos dos que realmente vimos.

La consideración principal es si desea exigir que sus clientes instalen .NET 3.0 o incluso mejor .NET 3.5 SP1.Recibirás algunos comentarios negativos.

WPF hace que sea mucho más fácil entregar el trabajo de diseño de formularios a un diseñador real, no a un desarrollador con ropa de diseñador.Si eso es algo que le gustaría hacer, WPF es su respuesta.Si los botones clásicos de Windows están bien, entonces Windows Forms es probablemente el camino a seguir.

(Varias respuestas afirman que debería usar WPF si el diseño de la interfaz es "importante para usted", pero eso es bastante vago.El diseño de la interfaz siempre es "importante").

Si tiene una licencia de MSDN, consulte Herramientas de expresión.Está diseñado explícitamente para WPF, se exporta directamente a Visual Studio y puede ayudar a facilitar la transición.

Si solo le importa admitir Windows y no le importa el tiempo que lleva aprenderlo, opte por WPF.Es rápido, flexible, fácil de cambiar y tiene excelentes herramientas para trabajar con él.

Como beneficio adicional, Silverlight se basa en WPF y comenzar con cualquiera de ellos le permite adquirir conocimientos para trabajar con el otro.Si las cosas continúan basándose en la web, tener conocimientos previos (y una biblioteca de código existente) para transferir fácilmente al navegador (o Windows Live Mesh) podría ayudar a darle a su software una vida extra.

Si decide utilizar WPF, teniendo en cuenta los pros y los contras ya explicados en las respuestas anteriores, le recomiendo encarecidamente que siga esto. Episodio de dnrTV con Billy Hollis

En DotNetRocks episodio 315, Brian Noyes analiza esto extensamente.

Existe un problema conocido con la representación de texto en WPF.Muchos usuarios informan que el uso intensivo de suavizado y combinación de píxeles provoca que el texto sea borroso.Esto es un factor decisivo en algunas circunstancias y, hasta donde yo sé, Microsoft lo ha reconocido en algún nivel.

Durante los últimos 3 años y medio he estado desarrollando Windows Forms (en dos empresas).Ambas aplicaciones se utilizaron mucho y terminaron teniendo problemas con GDI.Las aplicaciones grandes de Windows Forms eventualmente se quedarán sin recursos GDI, lo que provocará que el usuario final tenga que reiniciar.

Scott se queja de Expression Blend y cómo no tiene sentido para él como desarrollador.Mi primera reacción a Expression Blend fue así.Sin embargo, ahora lo veo como una herramienta invaluable, pero realmente depende de qué tipo de desarrollador seas.

Soy un desarrollador de interfaz de usuario que ha tenido que realizar el Integrador función, y finalmente descubrí que Expression Blend es invaluable para crear estilos y controlar plantillas de manera WYSIWYG.Casi siempre tengo Expression Blend y Visual Studio ejecutándose en el mismo proyecto al mismo tiempo.

También creo que jugar con Expression Blend y echar un vistazo a XAML que se escupe es una excelente manera de aprender la API de WPF...Al igual que usar el diseñador en Windows Forms y verificar el código C# que genera, es útil para aprender a usar lo que sea que esté diseñando allí.

Expression Blend es útil.Pruébelo, especialmente si está trabajando en las imágenes de la aplicación.

una cita de una publicación anterior de Mark:

  • En Windows Forms, usted diseña su interfaz de usuario y luego escribe código para controlar esa interfaz de usuario, que generalmente también incluye código para controlar sus objetos de datos.
  • En WPF, usted invierte en la capa empresarial que controla sus objetos de datos y luego diseña una interfaz que escucha sus objetos de datos.

Yo diría que esto es más una elección de diseño, que si está utilizando Windows Forms o WPF o no.Sin embargo, puedo apreciar que ciertas tecnologías podrían ser más adecuadas para un enfoque particular.

Sólo si no tienes experiencia en WPF y no quieres invertir en él :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top