¿Cuál es la forma más sencilla de actualizar una aplicación grande de C# winforms a WPF?

StackOverflow https://stackoverflow.com/questions/111817

  •  02-07-2019
  •  | 
  •  

Pregunta

Trabajo en una aplicación C# grande (aproximadamente 450.000 líneas de código), constantemente tenemos problemas con el montón del escritorio y las fugas del controlador GDI.WPF resuelve estos problemas, pero no sé cuál es la mejor manera de actualizar (creo que esto llevará mucho tiempo).La aplicación tiene sólo unos pocos formularios, pero estos pueden contener muchos conjuntos diferentes de controles de usuario que se determinan mediante programación.

Esta es una aplicación interna de la empresa, por lo que nuestros ciclos de lanzamiento son muy cortos (normalmente un ciclo de lanzamiento de 3 semanas).

¿Existe algún camino de actualización gradual o tenemos que recibir el golpe en un esfuerzo masivo?

¿Fue útil?

Solución

Puede comenzar creando un host WPF.

Luego puede usar el control <WindowsFormHost/> para alojar su aplicación actual.Luego, sugiero crear una biblioteca de sus nuevos controles en WPF.Uno a la vez, puede crear los controles (sugiero que sean controles personalizados, no controles de usuario).Dentro del estilo de cada control, puede comenzar usando el control <ElementHost/> para incluir el control de formularios de Windows "antiguo".Luego puede tomarse su tiempo para refactorizar y recrear cada control como WPF completo.

Creo que aún será necesario un esfuerzo inicial para crear los contenedores de control y diseñar un host WPF para la aplicación.No estoy seguro del tamaño de la aplicación ni de la complejidad de los controles de usuario, por lo que no estoy seguro de cuánto esfuerzo supondría para usted.En términos relativos, es mucho menos esfuerzo y mucho más rápido poner en funcionamiento su aplicación en WPF de esta manera.

Sin embargo, no haría eso y lo olvidaría, ya que puede tener problemas con los controles que se superponen entre sí (los formularios de Windows no funcionan bien con WPF, especialmente con transparencias y otros elementos visuales)

Infórmenos sobre el estado de este proyecto o proporcione más información técnica si desea orientación más específica.Gracias :)

Otros consejos

¿Utilizas muchos controles de usuario para las piezas?WPF puede alojar controles winform, por lo que puede incorporar partes al formulario principal.

WPF le permite incrustar controles de usuario de Windows Forms en una aplicación WPF, lo que puede ayudarle a realizar la transición en pasos más pequeños.

Échale un vistazo al WindowsFormsHost clase en la documentación de WPF.

Supongo que no solo estás buscando un ElementHost para instalar tu amplia aplicación Winforms.De todos modos, eso no es una migración real a WPF.Considere las respuestas en este hilo ¿Cuáles son los mayores obstáculos que hay que superar al migrar de Winforms a WPF?, Será de mucha ayuda.

Hay un documento técnico muy interesante sobre la migración de una aplicación winform .NET 2.0 hacia WPF, consulte Evolucionando hacia una aplicación .NET 3.5

Resumen del artículo:En este artículo, voy a resumir algunos de los procesos de pensamiento, decisiones y problemas que tuvimos que enfrentar al evolucionar una aplicación Microsoft .NET de 1.x/2.x a 3.x.Veré cómo ayudamos a nuestro cliente a adoptar la nueva tecnología y, aun así, mantuvimos un calendario de lanzamiento aceptable para la empresa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top