2010-05-05 12 views
9

Teniendo en cuenta lo que CannibalSmith dijo una vez: "Todas las respuestas dicen que WPF es diferente". Es una gran subestimación. No solo tiene que aprender muchas cosas nuevas, debe olvidar todo lo que ha aprendido de las Formas. una forma completamente nueva de hacer UI ".¿Cuáles son las mejores lecturas para comenzar a utilizar WPF en lugar de WinForms?

.. y con muchos años de experiencia con el desarrollo visual de aplicaciones de escritorio de Windows (VB6, Borland C++ Builder VCL, WinForms) (que es difícil de olvidar), cómo paso rápidamente al desarrollo para decir aplicaciones WPF bien formadas con Visual Studio?

No necesito gráficos boozy-woozy para dar a mi aplicación la apariencia de una superproducción de Hollywood o un pijama de un millón de dólares. Siempre me gustó el orden de los controles comunes de Windows y las pautas de diseño de la interfaz de usuario, y aún más los disfruté con la salsa Vista Glass Aero Graphite.

Estoy perfectamente satisfecho con WinForms, pero quiero que mis aplicaciones se construyan con las tecnologías estándar más eficientes y actualizadas, y que estén diseñadas de acuerdo con los patrones más eficientes y flexibles de hoy y mañana, aprovechando la interfaz integración y reutilización de la funcionalidad y aprovechar todas las ventajas del hardware y las API modernas para maximizar el rendimiento, facilidad de uso, fiabilidad, facilidad de mantenimiento, extensibilidad, etc.

Me gusta mucho la idea de separar la vista, la lógica y los datos, dejando ver tome todas las ventajas de la plataforma (puede ejecutarse como un applet de navegador web en un thin client o como una aplicación de escritorio en una PC con una GPU más reciente), permitiendo que la lógica se reutilice, paralelice y evolucione sin problemas, almacenando datos en una estructura de pozo formato ed en un lugar correcto.

Pero ... al pasar de VB6 a Borland C++ Builder fue muy fácil (no se necesitaban libros/tutoriales para encenderlo y empezar a trabajar) (asumiendo que ya conocía C++), pasando de BCB a WinForms era el mismo , no me parece obvio cómo hacerlo con WPF.

Entonces, ¿cómo puedo convertirme de un desarrollador de WinForms en un creador de WPF y un desarrollador de WPF?

+1

+1 para no sólo una cuestión interesante, pero muy bien escrito uno también. –

Respuesta

2

Tenga en cuenta que MVVM parece adecuado solo para aplicaciones de una sola ventana. Me zambullí en WPF en base a la inexperiencia y las recomendaciones generales de que encajaría mejor en un proyecto de quiosco, especialmente uno donde el cliente me haya dado imágenes de Photoshop de todas las pantallas de la aplicación. Tener gráficos geniales era un requisito para este proyecto y me gustó el parecido vago de WPF con el desarrollo web.

descubrí algunas desventajas

1) no hay tal cosa como un conjunto de herramientas oficial MVVM. Hay muchos de ellos, todos respaldados por un individuo. Un tiro en una caja de herramientas de Microsoft ha sido puesto a un segundo plano hace un año y no hay soporte VS2010.

2) la programación de una aplicación de múltiples ventanas, una especie de asistente sencillo con avance y retroceso, es una simple pesadilla. Salí de esto con un diseño limpio que define a un delegado para cada acción de IU y un comando para cada acción de negocio, pero aún así creo que es demasiado compromiso con un marco para justificarlo, y no puede mostrar el resultado de sus pruebas a este cliente espera emoción.

3) Se abandona el hábito de hacer doble clic en un botón y agregar un código. Esto deja una sensación persistente de usar el IDE en contra de su naturaleza. Básicamente, utilizas Visual Studio como editor de texto y diseñador de interfaz, aún con la gran ayuda de la herramienta.

Los aspectos positivos, hasta el momento son:

1) la definición de componentes visuales es muy flexible, rápido y fácil, y se puede elegir entre VS y Expression Blend. Las animaciones son simples de crear.

2) el enlace de datos simplifica la aplicación. Define un DataContext y enlaces y no tiene que mover datos de la lógica de negocios a la interfaz usted mismo, siempre que tenga una propiedad para todo lo que se debe mostrar.

3) Puede reducir la cantidad de lógica de negocios en la interfaz a cero.Es fácil separar el comportamiento de la aplicación de su aspecto, por lo que puede proteger su interfaz de diez maneras diferentes con poco esfuerzo y probar toda su lógica sin abrir una ventana.

4) dejas una puerta abierta para ir con Silverlight si te preguntan.

Mi conclusión es que si tiene una aplicación MDI en mente, puede encontrarse en un gran problema. Debe tener en cuenta que, si elige WPF, está arando terreno para las generaciones futuras en lugar de subirse a un tren que lo llevará rápido y fácil. No hay una forma establecida de hacer las cosas, especialmente aquellas que no están cubiertas por demos.

Los kits de herramientas, considerados todos los aspectos, no son tan importantes y cada uno de ellos le servirá bien. De hecho, un par de clases de apoyo son suficientes para comenzar y no hay magos de lujo, depende de usted seguir las convenciones.

Incluso puede hacer las suyas propias en unas pocas horas, una vez que comprenda lo que implica la lógica. El inconveniente es que tendrás que entenderlo bien para doblar la aplicación a tu manera.

Como dije antes, tuve que aprender mucho solo para mostrar una nueva vista cuando hacen clic en un botón para mantener el código limpio. Tómese el tiempo para ver the videos cited elsewere on StackOverflow que le ahorrará tiempo.

1

Después de haber conseguido en WPF este año, lo más importante para mí fue aprender cómo utilizar el modelo patrón de Vista Vista-Modelo para separar la vista de la lógica de la aplicación. Como regla general, si encuentra que está colocando una gran cantidad de código en el código para su vista, entonces está "haciendo las cosas mal".

Descubrí que, viniendo de un fondo de WinForms, estaba organizando muchos manejadores de eventos y haciendo cosas en mi código. A medida que me familiaricé con las funciones de MVVM y WPF, descubrí que podía eliminar la mayor parte de mi código y reemplazarlo por vistas vinculantes para los modelos de visualización.

Fue artículos como éste de Josh Smith de que ayudó a que me refiero a la trayectoria MVVM:

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

Una vez que haya empezado a conseguir la caída de mostrar los enlaces de vista de datos MVVM, echar un vistazo en los comandos y específicamente en la interfaz ICommand. Son el mecanismo principal por el cual las acciones del usuario activan las operaciones para su ejecución. Por lo tanto, en lugar de tener un controlador OnClick para botones, vincula la propiedad Comando del botón en XAML a una propiedad en su modelo de vista que expone una implementación de ICommand.

Mi 2c - Donovan

4
Cuestiones relacionadas