2009-03-12 87 views
20

Para una nueva aplicación, ¿es mejor usar WPF en Windows Forms? Usé Windows Forms antes, pero no mucho WPF. Por lo que sé, WPF es el sucesor de Windows Forms, ¿verdad?¿Es mejor usar WPF en Windows Forms?

La aplicación va a alojar DirectX Windows (no WPF 3D, pero Managed DirectX y SlimDX) con muchos controles personalizados.

EDIT: La aplicación es una aplicación relacionada 3D, editor, como modo:

Image created using the 3D painting program modo.

+0

Realmente depende .... ¿nos puede dar más información acerca de su aplicación? – Brann

+0

Dup? http://stackoverflow.com/questions/388711/when-is-winforms-the-correct-choice-vs-wpf –

+6

No dup - esto tiene una 3D/DirectX doblada. –

Respuesta

11

---- ----- EDIT 2

Dado que usted está tratando para hacer un editor como el que mostró, recomendaría ir a WPF aún más. Mi proyecto actual también tiene muchas características en esa línea, y hemos decidido que la capacidad de componer WPF con contenido de Direct3D es extremadamente poderosa. Es agradable poder convertir tu escena en cualquier cosa, no solo en una ventana rectangular. En WinForms, prácticamente se limitaba a un rectángulo, y también tenía problemas con el espacio aéreo (sutil, pero cosas como parpadeos cuando los menús se detienen sobre su hwnd, etc.). El compositor de WPF con D3DImage elimina todos estos problemas y le permite usar su imaginación para construir una interfaz de usuario muy flexible. Cosas como renderizar su escena en tiempo real en el lado de un objeto WPF3D son posibles, o usar controles WPF directamente en la parte superior de su escena d3d en lugar de intentar hacer la GUI en D3D, etc.

----- Original ---------

Si va a alojar DX, es posible que desee considerarlo, especialmente porque le da la capacidad de hacer la composición de la escena con su UI y no hay problemas de espacio aéreo si use D3DImage.

Esto funciona con SlimDX y WPF.

---- ----- EDITAR

Para más información sobre las desventajas de usar Direct3D con Winforms, y las ventajas de la integración/DX WPF, ver:

MSDN Article on Airspace

Codeproject arcticle on intro to D3DImage

+2

Gracias. ¿Qué es el espacio aéreo? –

4

Si está escribiendo muchos controles personalizados, elegiría WPF. Parte del diseño de WPF es extensible, composable y el resultado es que es muy sencillo escribir controles personalizados.

He hecho un poco de escritura de control personalizado en WinForms y puede ser muy difícil a tiempo. El diseño realmente te quitará algo de tiempo. Varios fines de semana de mi vida fueron pagados a WinForm Control Layout. Escribir los controles equivalentes en WPF fue muy fácil.

1

AFAIK WPF es el sucesor de WinForms, ¿verdad?

No creo que esto sea cierto tanto como a MS le gustaría impulsar esto. Simplemente hay demasiado código heredado escrito en Winforms para que sea algo realista en el futuro cercano o incluso algo distante.

Con eso en mente, si le gustaría, y puede darse el lujo de pasar el tiempo aprendiendo WPF, lo haría. De lo contrario, usaría Winforms.

+0

Bueno, Vista fue el sucesor de XP, pero no tenía la intención de hacer que todas las plataformas de Vista desaparecieran. WPF fue y está destinado por MS para renovar los fundamentos de WinForms mientras cumple el mismo nicho. – DevinB

+0

¡Se sorprenderá, creo! –

17

Nos ocupamos de esta pregunta hace 9 meses. Decidimos ir con WPF y hasta ahora estamos contentos con la decisión. Sí, hay una curva de aprendizaje. Es bastante considerable, especialmente en WinForms, donde tienes tanto que desaprender. También recomiendo que tengas acceso a un diseñador, de lo contrario, tu aplicación se verá un poco desgastada. También prepárate para algunos problemas de WPF que te harán pasar horas rascándote la cabeza diciendo 'por qué fue tan difícil'.

Pero WPF está un paso por delante. El enlace de datos, la creación de plantillas y el control completo de cómo desea que se vean las ventanas le hace pensar que así debería ser WinForms originalmente.

Oh sí, y prepárate para desembolsar un par de dólares por algunos controles faltantes. Hay algunas cosas que faltan como un selector de fecha y tener casillas de verificación en los controles de árbol (en realidad puede moldear esto, pero no es tan simple como las formas de ganar en ese sentido). 3.5 SP1 incluye un control de grilla ahora, afortunadamente.

Estoy seguro de que me faltan un montón más, pero eso es lo que puedo pensar en mi cabeza.

¡Buena suerte!

+0

Tanto DatePicker como DataGrid son parte del WPF Toolkit, que requiere .NET 3.5SP1. http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22567 – Andy

+0

Actualización: WPF ahora tiene muchos controles nuevos en http://weblogs.asp.net/scottgu/archive/2009/10/26/ wpf-4-vs-2010-and-net-4-0-series.aspx – gideon

3

Acabamos de pasar por esto también ... comenzamos a mudarnos a WPF en lugar de WinForms. Creo que en estos días es una decisión bastante fácil dejar atrás WinForms. Las herramientas son cada vez mejores y si puedes conseguir un verdadero diseñador en tu equipo, hay muy pocas cosas que no puedas armar.

Estamos empezando a darnos cuenta de que nuestro futuro no es WPF en realidad, sino que es Silverlight. A medida que Silverlight madura, se vuelve cada vez más a la par con WPF y le permite ejecutar plataformas cruzadas. La ruta de Silverlight se parece más a Adobe Air y un día vivirá fuera del navegador (en realidad puedes hacerlo ahora, pero es un dolor). Realmente creo que el futuro de .NET UI va a ser Silverlight.

2

En este caso, yo diría que seguir el ejemplo de su proveedor (es decir, Microsoft). Su propia producción interna cuenta cada vez más con WPF; y su alcance (piense en Silverlight) y la profundidad son claramente mayores que WinForms. También lo usan cada vez más con referencia a las mejores prácticas. De toda la evidencia (aquí y en otros lugares), parece estar lista para el desarrollo Prime Time.

No ha expresado ninguna afinidad particular por WinForms (supongo que lo que hay se basa en la familiaridad). Tendrás que cambiar eventualmente. Un nuevo proyecto sería un gran lugar para comenzar el proceso, todo lo demás es igual.

2

Después de haber hecho recientemente un producto muy similar (visor 3d para extraer datos en WPF), definitivamente puedo recomendar WPF/SlimDX.

Las herramientas son un poco flexibles (especialmente Visual Studio), pero WPF hace que sea mucho más fácil hacer una aplicación con un poco de Zing, en lugar del gris de control predeterminado que tienen la mayoría de las cosas.

Usando D3DImage desde 3.5SP1 es muy fácil alojar un dispositivo SlimDX dentro de un control.

En general, diría que WPF no es mejor, solo diferente. Algunas cosas son mejores, algunas son peores. Pero definitivamente es el futuro.

6

Descubrí que una vez que manejaba Expression Blend y WPF, era más productivo en la construcción de IU que con Windows Forms. En mi opinión, ese es uno de los factores más importantes, si no el más importante, con una nueva tecnología/herramienta; Si no puede obtener el mismo resultado que la herramienta anterior más rápido con la nueva herramienta, entonces todas las características que solo use el 10% del tiempo no compensarán.

Aparte de que hay otras ventajas de WPF tiene sobre Formas:

  • Tener la interfaz en XAML hace que sea mucho más fácil para afinar todas esas propiedades oscuros o para cortar y pegar toda una sección de uno control en otro,

  • WPF hace que sea mucho más fácil modularizar una interfaz, rompiendo un control de pantalla por control. Las formas pueden hacer lo mismo hasta cierto punto, pero siempre me pareció una batalla,

  • Algunas de las características son geniales. He encontrado que el uso de animaciones (guiones gráficos) es realmente útil para las pantallas de ingreso de datos donde se necesitan diferentes cuadros de entrada dependiendo de qué producto se elija o tal. Con Forms tendrías que crear un panel/formulario separado para cada pantalla de ingreso de datos, con WPF utilizo una animación para ocultar y mover los diversos cuadros de texto.

1

En su caso, WPF tiene sentido. Para mí, es una aplicación por elección de aplicación porque hay muchas cosas que puedes hacer muy bien en Windows Forms (como el rápido desarrollo de aplicaciones comerciales). Estoy usando WPF para escribir una buena GUI para una aplicación de centro de medios (proyecto personal para una consola de medios en mi pantalla de plasma de 50 pulgadas).

Sin embargo, si estoy escribiendo una aplicación de entrada y visualización de datos, normalmente utilizo Windows Forms para la velocidad de desarrollo. El editor XAML es mejor en Visual Studio 2010, pero aún tiene mucho camino por recorrer. Sin una referencia no hay IntelliSense ayuda en muchos de los atributos de la propiedad, por lo que es imposible saber qué entra en ellos (que es donde paso mucho tiempo tratando de encontrar esos valores, ya sea a través de un libro o ejemplos en la web) . Dicho esto, si escribe WPF, puede crear interfaces de usuario muy atractivas.

16

Sé que esta es una publicación anterior, pero creo que sigue siendo válida.

He usado WinForms durante 3 años en la primera empresa para la que trabajé. Hubo algunos programadores realmente buenos allí, y encontraron algunas maneras muy inteligentes de hacer algunas cosas muy interesantes. WinForms ha resistido la prueba del tiempo. Es una plataforma sólida, confiable y eficiente. Muchas personas, y muchas compañías, grandes y pequeñas, han estado usando WinForms por años, y la tecnología ha demostrado ser una y otra vez. La inercia es difícil de combatir, incluso si eres Microsoft.

Aún así, WPF es definitivamente el futuro. Microsoft lo dejó claro al hacer productos como Visual Studio 2010 y Expression Blend con él. (Al usar WPF para proyectos internos, Microsoft se vio forzado a corregir muchos de los problemas, como la representación de fuentes y problemas de velocidad, que impidieron que la gente lo adoptara al principio.) Visual Studio 2010 muestra que WPF ha estado listo para producción desde hace mucho tiempo

Entonces, ¿es mejor escribir su programa en WinForms o WPF? La respuesta es esta: WPF. Digo esto por dos razones: en primer lugar, porque Microsoft lo está apoyando internamente, podemos suponer que estará presente durante un tiempo Microsoft nos ha demostrado que es la siguiente herramienta de elección que me lleva al siguiente punto: se ha vuelto superior a WinForms (algunas personas con las que he hablado no están de acuerdo, pero es la verdad, sin embargo, y se está volviendo más obvia todos los días). WPF tiene una gran cantidad de características que WinForms (probablemente) nunca se otorgarán, como el soporte integrado de datos increíbles, y las animaciones basadas en la línea de tiempo que lo hacen fácil de crear temas increíbles para sus aplicaciones, y contará con diseñadores que suplicarán hacer el cambio.Hay mucho más de WPF de lo que se puede describir en un comentario, pero estos son dos grandes para mí :)

Dicho esto, sé que no hay nada que puedas hacer en WPF que no puedas hacer en WinForms. Puedes hacer cualquier cosa en cualquier idioma si quieres lo suficiente. El punto es que cuando WinForm lo deje buscando en Google cómo alguien más hizo algo genial, WPF incluye soporte integrado para todas las funciones que Microsoft considera que son el futuro de Windows y las pone al alcance de la mano.

Con el tiempo, las personas se acostumbrarán a las nuevas funciones compiladas directamente en Windows, y esperarán que estén disponibles en todas las aplicaciones que utilizan. Esto llegará al punto en que cualquier cosa que no los respalde se sentirá torpe, menos útil y parecerá menos rentable. (Veo la integración táctil como el ejemplo más obvio de esto. Aunque hay soluciones de pantalla táctil que se sujetan a un monitor y emulan un mouse, en cualquier computadora, la tecnología de pantalla táctil ha recorrido un largo camino y con Windows 8 borrando la línea entre el escritorio y los dispositivos móviles, es probable que las personas quieran usar aplicaciones de una forma que será excepcionalmente difícil de implementar si su aplicación usa WinForms).

Tarde o temprano, creo que el soporte y el desarrollo de WinForms se detendrán, y todos los que se quedaron atrás se verán obligados a virar, y rápidamente. Sin embargo, hay demasiados programas que confían en WinForms para que Microsoft pueda abandonarlos en el futuro cercano. Quién sabe lo que va a pasar. Quizás WinForms será para Microsoft lo que los procesadores Itanium para Intel, el producto que tiene suficientes usuarios para mantenerlo en funcionamiento, a pesar de que hay mejores soluciones disponibles. (http://arstechnica.com/business/news/2011/06/ask-ars-why-itaniumask-ars-with-xeons-improvement-why-bother-with-itanium.ars)

Así que mi consejo sería este: con respecto al nuevo desarrollo, realice el cambio a WPF. Envíe a algunos miembros del personal a cursos de capacitación, o déjelos jugar un rato para que puedan tener una mejor idea de la tecnología. La curva de aprendizaje será abrupta, pero al hacerlo aumentará el conjunto de habilidades de su equipo porque, al aprender WPF, también estarán en camino de aprender SilverLight, que es lo suficientemente similar a WPF para que las personas familiarizadas con WPF puedan para aprender rápidamente, pero está diseñado para la web en lugar del escritorio. Esto es valioso porque las aplicaciones reescritas en WPF serán mucho más fáciles de convertir a aplicaciones web más adelante. WPF es nuevo, pero fue creado por una razón, no simplemente por el hecho de hacer algo más para que las personas aprendan. Fue diseñado para hacer que las aplicaciones sean más fáciles de usar, intuitivas y portátiles. Fue diseñado para ayudar a los desarrolladores a hacer que sus aplicaciones se ajusten a la nueva era de las computadoras.

En cuanto a las aplicaciones escritas en WinForms: Creo que es seguro asumir que WinForms seguirá siendo soportado durante bastante tiempo simplemente por la cantidad de soporte que ha obtenido. Recomiendo que su equipo se familiarice con WPF y lentamente empiece a trasladar sus aplicaciones a WPF. Tómese todo el tiempo que Microsoft permita y no apresure el proceso, pero siempre tenga en cuenta que, de una forma u otra, los días de WinForms han terminado, y aunque nadie puede estar seguro de lo que sucederá, se eliminará el soporte para el producto heredado. tan pronto como pueda ser justificado. Incluso si las aplicaciones de WinForms se mantienen durante muchos años, es importante recordar que los tiempos están cambiando y que todos debemos cambiar con ellos.

+0

+1 Nice post ... – Trap

Cuestiones relacionadas