He estado desarrollando aplicaciones Winforms en C# desde hace unos años y he estado interesado en mover el desarrollo futuro hacia WPF, principalmente debido a las cosas positivas que he estado escuchando al respecto. Pero me pregunto qué clase de obstáculos han tenido que superar otros cuando migraron a WPF. ¿Hubo un golpe significativo a su productividad o algún problema en particular que encontró desafiante?¿Cuáles son los obstáculos más grandes para superar la migración de Winforms a WPF?
Respuesta
No estoy seguro de que pueda darle un solo obstáculo, porque es una desviación completa de WinForms. Mi sugerencia es obtener WPF Unleashed de Adam Nathan, olvidarse de todo lo que sabes sobre la construcción de UI con cualquier tecnología anterior (Winforms, MFC, Java) y comenzar de nuevo en el primer cuadro.
Si intenta y lo hace de cualquier otra manera, le causará total frustración.
ETA: la razón por la que digo que empiece de cero es porque a veces es más fácil aprender nuevos conceptos si se ingresa con un borrón y cuenta nueva. En el pasado, descubrí que puedo ser mi peor enemigo cuando se trata de aprender algo nuevo si trato de llevar el conocimiento de la tecnología a la tecnología (por ejemplo, pensar que hacer servicios web de asmx durante años me impide leer la primera pareja capítulos de un libro de WCF).
En mi experiencia ciertamente limitada con WPF, los obstáculos más grandes incluyen una revisión completa de mi modelo mental sobre cómo se construyen las IU y la nueva terminología que debe aprenderse como resultado de eso. Sin embargo, es posible que a otros les resulte más fácil adaptarse al modelo. Puedo ver cómo alguien que proviene de las mejores prácticas en el mundo web encontraría la transición mucho más natural.
Definitivamente hubo un impacto significativo en mi productividad (tan significativo que aún no me siento cómodo con la idea de ir a ver a mi jefe y decir "déjenme hacer esto con WPF en lugar de Winforms"). No creo que nunca llegue allí, pero necesito desarrollar un poco de comodidad adicional con la tecnología a través de la práctica en mi tiempo personal.
No me encontré con ningún problema en particular que me pareciera más desafiante que cualquier otro. Creo que Adam Nathan's WPF Unleashed se mencionó en otra parte, y definitivamente es una lectura que vale la pena. También he escuchado cosas buenas sobre Charles Petzold'sbook, aunque personalmente no puedo responder por ello.
Gracias, Greg. Aprecie su opinión sobre la productividad y también verá el libro de Petzold. Lo escuché en dotNet rocks hace un par de semanas y él fue interesante. – itsmatt
- No se puede apagar anti-alias.
- Sus usuarios necesitan Vista o XP SP2 con .net 3.x framework.
- Si desea utilizar winforms, tenga en cuenta Air Space (una solución para D3D here).
Estos son los principales problemas para mí. Aparte de eso, estoy totalmente de acuerdo, es mucho más de lo que parece.
Bueno, para mí fue el hecho de que los controles en WPF se comportan de manera diferente a los de WPF (por ejemplo, cuando se trata de posicionamiento en el formulario). Debe comprender la diferencia tan pronto como sea posible para usarla de manera exitosa y productiva.
El sitio web de Microsoft Learning tiene una introducción útil, que creo que está libre disponible si usted tiene una cuenta de Microsoft Passport cuenta de https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=85488
Gracias por el enlace, John. ¡Lo comprobaré! – itsmatt
Si la aplicación Windows Forms tiene una arquitectura modelo de objeto propio definido (más como un modelo de arquitectura MVC) Creo que no llevará mucho tiempo migrar su UI a WPF. WPF ha organizado sus elementos visuales de forma jerárquica (VisualTree) y RoutedEvents y RoutedCommands son conceptos totalmente nuevos en WPF. y, obviamente, hay más productos como DataTemplate/Controltemplate, todos en el nivel XAML. Todo esto hace una manera muy poderosa y fácil de lograr una gran experiencia de usuario. Así que mi punto principal aquí es que puede esperar que su modelo de objeto sea reutilizable (con algunas modificaciones) en WPF y que todo lo demás en el proyecto de Winforms deba descartarse. Por supuesto, no es necesario modificar todas las otras capas (capa de comunicación/DataLayer)
Estoy en el mismo barco. He estado programando usando winforms por tanto tiempo. Ahora sigo decidido que voy a aprender WPF y comenzar a hacer todo con él. Lo más difícil para mí es acostumbrarme a utilizar XAML principalmente para la interfaz de usuario en lugar del código C#, y muchas de las propiedades son diferentes en WPF. (IE: para cambiar el texto de una etiqueta, debe cambiar la propiedad del Contenido). Así que mi mayor problema es sacar mi cabeza de las formas de ganar y ponerme en una forma completamente nueva de pensar.
Incluso con más de 20 años de experiencia, encontré que WPF tiene una curva de aprendizaje empinada. Intenté hacer mi último proyecto utilizando WPF, pero la falta de controles integrados (como NumericUpDown por ejemplo) y problemas para hacer que DataBinding funcione con un objeto comercial me obligó a recurrir a Winforms para este proyecto, pero espero poder hacer proyectos en el futuro con eso. Casi todo el código que escribí (frente a lo que el diseñador generó) fue reutilizable cuando cambié entre WPF y Winforms.
- 1. Migración desde Winforms a WPF
- 2. ¿Cuáles son los grandes frameworks web hoy?
- 3. ¿Cuáles son las mejores lecturas para comenzar a utilizar WPF en lugar de WinForms?
- 4. ¿Cuáles son los principales beneficios de ingresar a WPF?
- 5. ¿Cuáles son los diez permisos más mortales?
- 6. ¿Cuáles son los mejores recursos para aprender WPF y .NET?
- 7. ¿Cuáles son los posibles escollos en la migración de Psyco a 64 bits?
- 8. Cómo facilitar la transición de WinForms a WPF
- 9. ¿Cuáles son los proyectos más interesantes que rodean a python?
- 10. Algoritmo para encontrar la ruta más corta, con obstáculos
- 11. Pasar de WPF a Silverlight: ¿Cuáles son las principales diferencias?
- 12. ¿Cuáles son los errores más comunes cometidos en el desarrollo de WPF?
- 13. ¿Cuáles son los frameworks de terceros de iPhone más útiles?
- 14. ¿Cuáles son los valores predeterminados para Binding.Mode = Default para los controles de WPF?
- 15. ¿Cuáles son los argumentos para main() para?
- 16. ¿Cuáles son los cambios recientes a F #?
- 17. ¿Los fondos repetidos en html son más eficientes si son más grandes que 1px?
- 18. ¿Cuáles son las 'grandes' ventajas de tener Poco con ORM?
- 19. ¿Cuáles son los 3 principales conceptos principales en WPF?
- 20. ¿Cuáles son los elementos más sorprendentes del estándar C++?
- 21. ¿Cuáles son los argumentos para sysctl()?
- 22. ¿Cuáles son los diferentes factores desencadenantes en WPF?
- 23. ¿Cuáles son los métodos más fáciles/mejores para administrar los archivos de etiqueta de ctags?
- 24. P = NP: ¿Cuáles son los métodos más prometedores?
- 25. Programación del compilador: ¿Cuáles son los ingredientes más fundamentales?
- 26. ¿Cuáles son los problemas del patrón MVVM?
- 27. Los objetos de Doctrine son GRANDES
- 28. ¿Qué es WPF para el programador WinForms?
- 29. ¿Cuáles son los requisitos para los parámetros de plantilla C++?
- 30. ¿Cuáles son los beneficios de corutinas?
Gracias Don por la información. Parece un libro que ha recibido una buena cantidad de críticas positivas. – itsmatt
Don - Obtuve el libro y está muy bien escrito y ha sido útil, ¡gracias de nuevo! – itsmatt