2009-02-26 14 views
40

He estado buscando en WPF, pero nunca he trabajado realmente en él (excepto por 15 minutos, lo que provocó esta pregunta). Miré esto post pero es realmente sobre el "Flash" de un WPF. Entonces, ¿cuál es la diferencia entre una aplicación de Windows Forms y una aplicación WPF?¿Qué es WPF y cómo se compara con WinForms?

+5

Encontré esto útil para mí [clear-code.blogspot.com/2012/04/what-is-wpf.html] (http://clear-code.blogspot.com/2012/04/what-is-wpf.html) –

Respuesta

54

WPF es una capa de presentación de interfaz de usuario basada en gráficos vectoriales WinForms no lo es. ¿Por qué es eso importante/interesante? Al estar basado en vectores, permite que la capa de presentación escale sin problemas los elementos de la interfaz de usuario a cualquier tamaño sin distorsión.

WPF es también un sistema de presentación componibles, lo que significa que casi cualquier elemento de la interfaz de usuario puede estar compuesta de cualquier otro elemento de la interfaz de usuario. Esto le permite crear fácilmente elementos de IU complejos a partir de elementos más simples.

WPF también reconoce completamente los datos, lo que significa que puede vincular cualquier propiedad de un elemento UI a un objeto .NET (o una propiedad/método de un objeto), una propiedad de otro elemento UI o datos. Sí, WinForms admite enlaces de datos, pero de una manera mucho más limitada.

Finalmente, WPF es "skinable" o "temaable", lo que significa que como desarrollador puede usar un cuadro de lista porque esos son los comportamientos que necesita pero alguien puede "desollarlo" para parecer completamente diferente.

Piense en un cuadro de lista de imágenes. Desea que el contenido sea realmente la imagen pero aún desea comportamientos de cuadro de lista. Esto es completamente trivial de hacer en WPF simplemente usando un cuadro de lista y cambiando la presentación del contenido para que contenga una imagen en lugar de texto.

+0

Estoy bastante seguro de que en WinForm puedes vincular cualquier propiedad a cualquier cosa. Es por eso que DataBindings.Add() toma cadena, objeto, cadena. Por lo tanto, puede usar la reflexión para unir las propiedades. – Quibblesome

+0

Silverlight utiliza un subconjunto de las capacidades XAML de WPF, por lo que saber cómo programar aplicaciones basadas en WPF hace que los applets de Silverlight sean muy fáciles. –

+0

Entonces, ¿puede el usuario distinguir entre WPF y WinForm? – Kredns

9

Para responder a su pregunta, una aplicación de WPF es una aplicación de Windows. WPF es el nuevo marco de Microsoft (en realidad, es un subsistema de .NET framework 3.0) para escribir aplicaciones ricas de Windows. Se entiende como un reemplazo eventual para WinForms (aunque es cierto que la tasa de adopción es mucho más lenta de lo esperado por MS).

17

Una buena manera de mirar esto podría comenzar con preguntar qué exactamente es Winforms.

en WinForms y WPF son marcos diseñados para hacer que la capa de interfaz de usuario de una aplicación más fácil de código. La gente muy vieja de aquí podría hablar sobre cómo escribir la versión de Windows de "Hello, World" podría tomar aproximadamente 4 páginas de código. Además, las rocas eran mucho más blandas y tuvimos que luchar contra lagartos gigantes mientras codificamos. La biblioteca y el diseñador de Winforms toman muchas de las tareas comunes y las hacen más fáciles de escribir.

WPF hace lo mismo, pero con la conciencia de que esas tareas comunes ahora pueden incluir cosas mucho más visualmente interesantes, además de incluir muchas cosas que Winforms no necesariamente consideró como parte de la capa de la interfaz de usuario. La forma en que WPF admite comando, desencadenadores y enlace de datos son partes excelentes del marco, pero la razón principal es la misma razón principal por la que Winforms tenía para existir.

La mejora de WPF aquí es que, en lugar de darle la opción de escribir un control completamente personalizado desde cero u obligarlo a usar un único conjunto de controles con capacidades de personalización limitadas, ahora puede separar la función de un control de su apariencia. La capacidad de describir cómo se ven nuestros controles en XAML y mantenerlo separado de cómo funcionan los controles en el código es muy similar al modelo de HTML/Código con el que los programadores web están acostumbrados a trabajar.

Una buena aplicación WPF sigue el mismo modelo que una buena aplicación Winforms haría; manteniendo tantas cosas como sea posible fuera de la capa UI.La lógica central de la aplicación y la capa de datos debería ser la misma, pero ahora hay formas más sencillas de hacer que las imágenes sean más impresionantes, y es por eso que la mayoría de la información que ha visto implica aspectos visuales más llamativos. Si está buscando aprender WPF, puede comenzar utilizándolo casi exactamente como lo haría con Winforms y luego refactorizando las otras características a medida que las capta. Para un excelente ejemplo de esto, recomiendo la serie de publicaciones de blog de Scott Hanselman sobre el desarrollo de BabySmash, which start here. Es un gran tutorial del proceso, tanto en código como en pensamiento.

+1

Descubrí que tratar de hacer las cosas de la forma WinForms cuando comenzaba en WPF me causaba muchos problemas. Probablemente sea mejor tratar de comenzar con una lista lo más limpia posible al comenzar a trabajar con WPF, IMO. – Andy

+0

@Andy Tengo que decir que fue el enfoque de Scott lo que realmente me obligó a entender mejor WPF. Creo que fueron exactamente esos problemas, los hackeos que tuve que usar para que mi código funcionara de todos modos, y luego la eventual solución "correcta" que realmente me hizo aprender. – Raumornie

3

de inicio aquí, hay decenas y decenas de vídeos: http://www.windowsclient.net/learn

En este caso, el schpiel marketing es bastante bueno:

** "Windows Forms es un conjunto de clases de .NET Framework que permite el desarrollo rápido de aplicaciones de cliente enriquecido de Windows, con potentes bibliotecas, extensibles para los controles de interfaz de usuario y gráficos. puede incorporar WPF en aplicaciones Windows Forms a través de WPF en Windows Forms interoperabilidad en el .NET Framework 3.5. "*

* "WPF, un componente de Microsoft .NET Framewor k 3.5, le permite construir la próxima generación de experiencias de usuario de Windows. WPF admite UI, medios, documentos, aceleración de hardware, gráficos vectoriales, escalabilidad a diferentes factores de forma, visualización interactiva de datos y legibilidad de contenido superior. "**

Con WPF obtienes mejor soporte gráfico, mucho más potente y flexible enlace de datos (si se trabaja con datos, utilizar WPF.)

3

WPF significa W iNDOWS P resentación F undación. Si bien la tecnología Windows Forms depende de GDI/GDI +, WPF se construye directamente sobre la parte superior de DirectX. Eso significa que puede hacer mucho más de lo que puede con WinForms, mientras se aquieta con la biblioteca de la clase .NET Framework. Puede crear usuarios ricos en terfaces, juegos 2D/3D, presentaciones y mucho más. WPF es muy similar a una película Flash (swf), sin el elemento "Película". WPF se basa en .NET y se puede utilizar para crear aplicaciones enriquecidas de web del lado del cliente.

1
  1. WPF es esencialmente una nueva API para la creación de interfaces gráficas de usuario para la plataforma de Windows.
  2. WPF es más que un sistema de presentación de próxima generación para crear aplicaciones de Windows Client junto con interfaces de usuario visualmente deslumbrantes.
  3. WPF se basa en DirectX (Direct3D), en lugar de depender del antiguo subsistema GDI/GDI +.
  4. WPF es una capa de presentación de IU basada en gráficos vectoriales y, al estar basada en vectores, permite que la capa de presentación escale sin problemas los elementos de la IU a cualquier tamaño sin distorsión.
  5. WPF es "skin-able" y "theme-able". Significa que WPF permite cambiar la apariencia de cualquier control de UI.
0

Desde una perspectiva de implementación, una de las principales diferencias es que WPF utiliza un modelo-vista-modelo de vista arquitectura MV-VM se aplican estrictamente, con la vista está definido en un lenguaje de marcado de encargo, XAML, el modelo de vista de ser una clase con propiedades accesibles, y el modelo es efectivamente la capa de acceso a datos. WinForms, en comparación, no tiene esa separación explícita, aunque por convención los diferentes aspectos se pueden agrupar en diferentes archivos C#, y todo es un código fijo. En la práctica, esto hace que el desarrollo de WPF sea más parecido al desarrollo DOM web, con el marco WPF funcionando en segundo plano y mediando.

Cuestiones relacionadas