win32 microsoft community .net wpf winforms .net-3.5 .net-3.0

.net - microsoft - Al crear una nueva GUI, ¿WPF es la opción preferida sobre Windows Forms?



toolkit win32 ui controls dll (30)

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

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

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


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

Quédese con él por un tiempo, lea el libro de Adam Nathan y vea la creciente biblioteca de controles de terceros como los de Telerik y ComponentOne . Un punto negativo, en mi opinión, es que la herramienta de diseño, Expression Blend , es muy incómoda de usar. La última versión todavía está en versión beta, pero no nos parece bien para aquellos de nosotros que hemos usado Visual Studio durante años. Sí, es principalmente para diseñadores, pero hay cosas que simplemente no puedes hacer en Visual Studio.


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

1.) WPF no depende de objetos GDI. Bueno, creo que usa 2 objetos GDI para la instancia de la ventana, pero eso es prácticamente nada. He estado involucrado hasta cierto punto en una aplicación interna de Windows muy grande. Las personas en nuestra oficina a veces ejecutan 3 o 4 instancias de forma simultánea. El problema es que con frecuencia se topan con el límite de 10.000 objetos GDI inherentes a Windows 2000, XP y Vista. Cuando eso suceda, todo el sistema operativo dejará de responder y comenzará a ver artefactos visuales. La única forma de solucionarlo es cerrar las aplicaciones.

2.) WPF utiliza la GPU. La capacidad de WPF de descargar parte del procesamiento de la interfaz de usuario a la GPU es brillante. Solo espero que este aspecto mejore con el tiempo. Como antiguo aficionado a la programación de OpenGL, puedo apreciar el poder 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 la línea de ninguna manera). Ese tipo de potencia de procesamiento en paralelo puede avergonzar a cualquier CPU de cuatro núcleos.

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


Ambas tecnologías tienen sus pros y sus contras. En una aplicación grande con una IU "clásica" usaría Windows Forms. En una aplicación que requiera una interfaz de usuario enriquecida (despellejamiento, animaciones, interfaz de usuario cambiante) elegiría WPF. Consulte el artículo WPF vs. Windows Forms que compara WPF y Windows Forms.


Bueno, una respuesta es "cuando tienes que soportar 1.1 o 2.0", ya que WPF es parte de .NET 3.0. Se conocen limitaciones del sistema operativo para WPF, y hay un problema obvio de habilidades: si tiene un equipo de desarrolladores que conocen las formas de ganar, entonces puede ser más fácil obtener un código robusto con formas de ganar. Sin embargo, si está escribiendo mucho código UI, probablemente valga la pena comenzar a seleccionar WPF en algún momento.

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


Como otros han dicho, existen ventajas y desventajas en cualquier caso que vaya aquí. Las ventajas de WPF, como han dicho otros, incluyen:

  • La capacidad de hacer UI muy ricas con relativa facilidad.
  • Animación más fácil y efectos especiales
  • Escalabilidad inherente (use la herramienta de ampliación de Windows Vista en una aplicación de 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, hay inconvenientes en WPF, donde Windows Forms se destaca:

  • El paquete de control interno de WPF es mucho más limitado que el de Windows Forms.
  • Existe un mayor soporte en el espacio de control de terceros para Windows Forms. (Eso está cambiando, por supuesto, pero piénselo: Windows Forms ha existido desde 2001; WPF solo hace unos años. Con la ventaja del tiempo, Windows Forms tiene un mayor soporte 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 UI geniales, atractivas y atractivas en cualquier herramienta, si hace el trabajo (o usa las herramientas correctas de terceros). Al final del día, ninguno es necesariamente mejor en todas las circunstancias. Use lo que se sienta bien para el proyecto.


Como una ventaja adicional, Silverlight se basa en WPF y, a partir de cualquiera de los dos, le permite obtener los conocimientos para trabajar con el otro. Si las cosas continúan yendo a la web, tener conocimiento previo (y una biblioteca de código existente) para transferir fácilmente al navegador (o Windows Live Mesh) podría ayudar a dar a su software una vida extra.


Considere WPF si el diseño de la interfaz es importante para usted, ya que WPF puede ofrecer una mejor experiencia de UI. Pero Windows Forms tiene de su parte los años de la evolución, por lo que está comprobado que funciona y usted puede encontrar muchos programadores versados ​​para esa plataforma.

También la portabilidad puede ser un problema, WPF solo funciona con Windows XP SP2 y superior.

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


Creo que vale la pena aprender WPF. Una vez que esté actualizado, 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 ''sexy''. La mayor parte de esto es solo una moda. Puede hacer aplicaciones "normales" al estilo de las Formas de forma muy fácil y rápida en WPF.

Todo el concepto se presta para un diseño más fácil de la OMI.


Después de tres meses de tratar de forjar una aplicación de line-of-business (LOB) en WPF, llegué a un 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á del mero atractivo visual ... las capacidades de creación de plantillas y de unión son excelentes ejemplos. El modelo de objetos completo ofrece más flexibilidad y posibilidades más amplias. Sin embargo, eso no lo convierte en la plataforma de facto para futuras aplicaciones de LOB.

Los "problemas" que WPF resuelve 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 correctas. Incluso las capacidades de enlace de ruta de objetos de WPF se pueden reproducir en Windows Forms con algunas clases de ayuda muy simples. Las capacidades de la plantilla de datos de WPF son muy buenas, pero una vez más no son nada que no puedas simular en Windows Forms en las raras ocasiones en que no sabes exactamente qué objetos vas a representar en una determinada parte de la pantalla.

Donde Windows Forms se adelanta es en términos de madurez. No puede cambiar un gato muerto en Google sin ir a algún blog donde alguien haya resuelto un problema de Windows Forms para usted. WPF, por otro lado, tiene comparativamente menos recursos de aprendizaje disponibles, menos controles personalizados disponibles, y no se han resuelto tantos de sus problemas iniciales.

En el momento más crítico de tomar una decisión WPF vs Windows Forms tiene que ser la madurez del entorno de desarrollo. Los editores de Windows Forms son hábiles, receptivos e intuitivos. Los comentarios acerca de los errores le llegan al instante, las soluciones son generalmente obvias y el ciclo de compilación-> depuración-> edición en Windows Forms es muy rápido.

Las aplicaciones de WPF, por su parte, tienen un soporte de tiempo de diseño comparativamente patético, con la vista de diseño demasiado lista para desanimarse en el primer encuentro de un error, que a menudo requiere una compilación de proyecto después de la corrección antes de que el diseñador esté dispuesto a iniciar de nuevo. Arrastrar y soltar los componentes de la caja de herramientas podría no ser compatible, dada la amplia gama de circunstancias bajo las cuales o 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 ofrezca cualquier tipo de rendimiento razonable o facilidad de diseño.

Depurar aplicaciones WPF es un poco como el viejo paradigma de depuración de ASP.NET ... presionar F5 -> esperar -> iniciar -> error -> detener -> arreglar -> 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 es a menudo tedioso.

La conclusión, en pocas palabras, es que las herramientas de desarrollo para Windows Forms van a tener que ejecutar front-ends en una fracción del tiempo de una aplicación WPF ... especialmente si está creando grillas de detalles maestros o una hoja de cálculo. como las interfaces, que tienen la mayoría de los LOB. Con Windows Forms, comienza con el 90% del trabajo ya hecho para usted.

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

Editar: esta respuesta se publicó sobre .NET 3.5 + Visual Studio 2008, pero .NET 4.0 con Visual Studio 2010 se envía con una cuadrícula de datos de 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 tiene prisa por desarrollar RAD , vaya a Windows Forms. Si está buscando producir una aplicación de línea de negocios multiusos, de fácil manejo, escalable y de recursos, bien estructurada, considere ASP.NET MVC + HTML 5 + jQuery ... Mis proyectos con estas tecnologías han dado como resultado una mejor resultados, antes, para mis clientes. MVC ofrece todas las mismas plantillas que WPF y jQuery habilita animaciones e interacciones complejas. Más importante aún, una solución ASP.NET MVC + jQuery no requiere que sus usuarios finales tengan escritorios modernos con hardware de gráficos decente.


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


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 de Model-View-ViewModel.

Mi primera aplicación line-of-business con WPF terminó como un fallo total, porque era un recurso que acabó con las portátiles de muy bajo nivel de mi usuario final ... y esto fue porque acabo de entrar con WPF + LINQ to SQL y esperaba un buen resultado ... y aquí es donde WPF diverge tan fuertemente de Windows Forms ... En Windows Forms, puede salirse con la suya con ese tipo de cosas. WPF es mucho más pesado en recursos que Windows Forms, y si no diseñas tu aplicación para que sea delgada, terminas con un gorila de 800 libras.

No te intimides con WPF ... exploradlo. 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.

Última palabra: si continúa con WPF, obtenga una buena aceptación de la virtualización de datos para usar con listas y cuadrículas. Lo que es un simple ListItem ligado a datos o GridCell termina siendo un gran gráfico de objeto lógico + visual en WPF, y si no aprende a virtualizar, su aplicación no funcionará bien en grandes conjuntos de datos.



Existe un problema conocido con la representación de texto en WPF. Muchos usuarios informan que el uso intensivo de anti-aliasing y pixel-blending utilizado causa texto borroso. Este es un gran obstáculo en algunas circunstancias y, hasta donde sé, ha sido reconocido por Microsoft en algún nivel.


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 le toma a un desarrollador aprender WPF cuando ya conoce Windows Forms.
  2. WPF no se ejecutará en Windows 2000 o inferior.

Hay una curva de aprendizaje muy empinada para WPF, y le recomiendo que obtenga primero los libros obvios ( Adam Nathan , Sells/Griffiths y Chris Anderson ) y blogs ( Josh Smith , etc.). Solo prepárate para ello y asegúrate de que tu proyecto te permita aprender WPF.

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

Personalmente, creo que WPF lo vale, pero prevenido. También tenga en cuenta que efectivamente restringe a sus usuarios a Windows XP SP2 + y Windows Vista. Tomamos esa decisión, pero es posible que tenga requisitos diferentes.


La consideración más importante a la hora de decidir cuál usar es considerar qué .NET Framework ha instalado su público objetivo. Me parece que cada vez más personas tienen las versiones inferiores de .NET Framework que solo son compatibles con Windows Forms, pero esa es solo mi experiencia personal.


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

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


No estoy de acuerdo con algunas de las respuestas aquí. WPF es realmente adecuado para aplicaciones de line-of-business (LOB). (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 llamativa (lo cual no es necesario en aplicaciones comerciales), WPF ofrece mucho más para usted.

Las funciones de enlace de datos y plantillas son 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 2 aplicaciones LOB en equipos con no más de 2-3 desarrolladores.

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



Si solo te preocupa apoyar a Windows y no te importa el tiempo que lleva aprenderlo, ve con WPF. Es rápido, flexible, fácil de reciclar y tiene excelentes herramientas para trabajar con él.


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


Solo si no tienes la experiencia de WPF y no quieres invertir en ella :)


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

En general, los comentarios que hice anteriormente aún se mantienen ... El soporte de tiempo de diseño para WPF aún no ha llegado. Si tiene una gran prisa por sacar una aplicación de cliente rico de la puerta, vaya con Windows Forms. Período. Microsoft no tiene prisa por descontinuar la plataforma GDI / Windows Forms, por lo que puede contar con un buen soporte para un tiempo justo en el futuro.

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

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 la entrada de usuarios no válidos 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 de que el único uso para el diseño y la creación de plantillas es crear un efecto llamativo en la pantalla, la verdad es que estas características simplifican significativamente la codificación de una interfaz de usuario que brinda comentarios enriquecidos, como botones que se activan o deshabilitan. el estado de la capa de lógica de negocios subyacente, o la información sobre herramientas que encuentra de forma inteligente su texto en función del estado del objeto debajo del cursor, etc.

Todo esto se suma a funciones increíblemente valiosas para aplicaciones comerciales "nada lujosas", simplemente porque hacen que sea fácil mantener la interfaz congruente con los datos subyacentes.

En una palabra:

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

Es una diferencia aparentemente sutil, pero hace una gran diferencia en su capacidad para reutilizar el código ... lo que hace que la pregunta sea: "¿Es la pregunta de Windows Forms vs WPF realmente una decisión de inversión?"

(Esto parece haberse convertido en mi hilo favorito)


Una cita de una publicación anterior de Mark :

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

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


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

(Las respuestas múltiples afirman que debe 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").


WPF requiere Windows Vista o Windows XP SP2, que no es un requisito oneroso, pero es relevante. Si desea ejecutar en Windows 2000 (que algunas personas aún lo 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 donde es la elección correcta.


WPF te permite hacer cosas increíbles, y ME ENCANTA ... pero siempre me siento obligado a calificar mis recomendaciones, siempre que los desarrolladores me pregunten si creo que deberían cambiar a la nueva tecnología.

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

Al menos uno o dos de sus desarrolladores tienen sensibilidades de diseño, y las personas con autoridad final de diseño tienen una comprensión decente de los problemas de desarrollo, por lo que puede aprovechar las capacidades de WPF para crear algo que es realmente MEJOR, en lugar de simplemente "colorido" , presentando animación gratuita?

¿Algún porcentaje de su base de clientes objetivo se ejecuta en conjuntos integrados de chips gráficos que podrían no ser compatibles con las características que estaba planeando, o siguen ejecutando Windows 2000, lo que los eliminaría como clientes por completo? Algunas personas también preguntan si sus clientes realmente se preocupan por las imágenes mejoradas, pero al haber vivido los debates internos de la empresa "Nuestros clientes comerciales no les importan los colores y las imágenes" a principios de los 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 correctas, para que pueda ofrecerles algo que les haga preocuparse AHORA.

¿Implica el proyecto un desarrollo a fondo, al menos para la capa de presentación, para evitar la complejidad adicional de intentar engancharse en un andamio heredado incompatible (Interop con Win Forms NO es perfecto)?

¿Puede su gerente aceptar (o distraerse) una DROP significativa en la productividad del desarrollador durante cuatro a seis meses?

Este último problema se debe a lo que me gusta pensar de la naturaleza "FizzBin" de WPF, con diez maneras diferentes de implementar cualquier tarea, y sin una razón aparente para preferir un enfoque a otro, y poca orientación disponible para ayudarlo a hacer una elección. No solo quedarán claras las deficiencias de la elección que elija hasta mucho más adelante en el proyecto, sino que está virtualmente garantizado que cada desarrollador de su proyecto adoptará un enfoque diferente, lo que resultará en un gran dolor de cabeza para el 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


WPF viene con muchas ventajas tales 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 Windows Forms y me siento bien sabiendo que puedo contar con otro diseñador para que mi aplicación se vea bien.

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

Si tiene el tiempo y los recursos para invertir en el aprendizaje de WPF, ¡hágalo! Incluso si va a escribir aplicaciones de Silverlight para admitir múltiples sistemas operativos.

Si necesita aplicaciones de escritorio para ejecutar en múltiples sistemas operativos con SWF.


Scott se queja de Expression Blend y de que 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 del tipo de desarrollador que sea.

Soy un desarrollador de interfaz de usuario que ha tenido que desempeñar el rol de integrador , y finalmente encontré que Expression Blend era invaluable para crear estilos y controlar las plantillas de manera WYSIWYG. Casi siempre tengo Expression Blend y Visual Studio ejecutando en el mismo proyecto al mismo tiempo.

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

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


¿Hay alguna razón de peso para usar WPF?

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

Para aplicaciones comerciales, las mayores ganancias serán:

  • El fantástico enlace de datos y la creación de plantillas marcan la diferencia. Una vez que un modelo de datos decente está en su lugar, solo se requieren unos pocos clics para crear una plantilla de datos y usar Expression Blend para configurar exactamente cómo se verá el objeto usando la función de arrastrar y soltar. Y vinculante para 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 sin problemas al tamaño del contenedor y los cambios de forma, sino que los elementos pueden agrandarse y rotarse, e incluso extenderse fuera de su marco contenedor.
  • Los objetos ordinarios se pueden presentar de la forma que desee, pueden tener 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, renderizar en la impresora es trivial. Correctamente configurado, WPF hace que Crystal Reports o SQL Server Reporting Services (SSRS) se vean como el juguete de un niño.
  • Su interfaz de usuario se verá y se sentirá mucho más dinámica, incluidas características agradables, como botones que se animan al pasar el mouse sobre ellas.

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 usar un editor externo. Cada componente de estos puede estar enlazado a datos y animado, o controlado por código. En Windows Forms usualmente solo tiene que importar un mapa de bits y usarlo tal como está, a menos que quiera trabajar mucho.
  • ¡Las animaciones son geniales! Los usuarios quedarán realmente impresionados, siempre y cuando no exageres. También pueden ayudar a las personas a ver lo que está sucediendo y a reducir la necesidad de serlo. Por ejemplo, al arrastrar un objeto puede animar el objetivo para mostrar lo que sucederá si lo suelta.
  • Colores, rellenos degradados, pinceles, fuentes de fantasía, rotación de cualquier objeto, pinceles, etc. Todo lo que quieras gráficamente es tuyo si lo pides.
  • Increíblemente personalizable. Necesitaba dibujar las vías del ferrocarril para una aplicación, así podía dejar caer un tren sobre ellas. Un par de horas más tarde tenía las vías del ferrocarril que podía dibujar en cualquier lugar de la pantalla con las curvas de Bézier , y se unían y cambiaban automáticamente.

La conclusión es que cualquier GUI de tamaño significativo que pueda crear en Windows Forms se puede construir en WPF en un tercio del esfuerzo (o menos) y lucir mucho, mucho mejor.

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

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

  • La RAM puede subir o bajar dependiendo de tu implementación. WPF almacena sus datos de manera más eficiente, por lo que los objetos individuales son más pequeños, pero tienden a haber más objetos en WPF que en Windows Forms, por lo que se equilibran, y cualquiera puede salir adelante.
  • La CPU aumentará en comparación con Windows Forms. En mi experiencia, la actualización real de objetos WPF en pantalla requiere aproximadamente el doble de CPU que la renderización 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é utilizando Windows Forms: los juegos más graves se escriben directamente en DirectX .
  • El uso del disco será un poco menor para WPF porque requiere mucho menos código que Windows Forms. Los datos serán del mismo tamaño, por supuesto.

Una nota más sobre el uso de la CPU: las animaciones y las transformaciones (movimiento, traducción, etc.) son en realidad más eficaces en WPF que en Windows Forms debido a su almacenamiento en modo retenido. Es la obtención inicial de los objetos que hay más lenta.

Gastos generales de mantenimiento

WPF es una gran victoria sobre Windows Forms cuando se trata de mantenimiento. Como todo se hace en 1/5 de código como antes, hay 1/5 de mantenimiento. Además, todas las cosas repetidas se han ido 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 usar 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 potentes, y usted puede definir fácilmente la suya propia. (De hecho, es normal hacerlo).

Algunas ventajas específicas de XAML:

  • Toda su interfaz de usuario se define en un archivo de texto que es fácil de leer y manipular, tanto para usuarios como para herramientas.
  • MarkupExtensions permite que los enlaces se especifiquen de una manera clara y simple
  • Los convertidores de tipo permiten que las propiedades con tipos complejos sean fácilmente especificadas. Por ejemplo, puede decir Pincel = "Verde" 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 por muchos años. Muchas personas han implementado partes de esta funcionalidad, pero para obtener todo en un solo lugar y a un precio ($ 0) es increíble.

WPF es un gran cambio de paradigma de Windows Forms y le tomará un tiempo acostumbrarse, pero el tiempo que pase aprendiéndolo se amortizará muchas veces.

WPF aún tiene algunas verrugas incluso cinco años más tarde, pero su poder lo dejará totalmente perplejo una vez que lo experimente. Si alguien intenta arrastrarte de vuelta a Windows Forms, solo vas a patear y gritar.

Consejos: - Obtenga una copia de Expression Blend para el desarrollo - Edite XAML a mano ocasionalmente - No se dé por vencido cuando parezca extraño al principio