me pasaré entonces a WPF espero que no haya mucho cambio
La diferencia es abismal, ten en cuenta que son tecnologías distintas y esto lo verás reflejado en todos los aspectos, empezando por el hecho de que
WPF usa una liibrería de clases/espacios de nombre distintos (en
WinForms:
System.dll,
System.Drawing.dll,
System.Windows.Forms.dll, en
WPF:
WindowsBase.dll,
PresentationCore.dll,
PresentationFoundation.dll), así que olvídate de usar ninguna clase relacionada con
WinForms y/o con
GDI/GDI+ (puedes hacerlo, pero no sería apropiado) ya que
WinForms está basado en las APIs de
Win32, y
WPF no.
El motor de renderizado de
WinForms es
DirectShow, en
WPF es
DirectX (Direct3D Media Foundation), en
WinForms tienes muchas ventanas asociadas a algo muy conocido por el nombre
HWND o window handle (o controlador de ventana), en
WPF solo tienes una ventana, el resto no son tecnicamente hablando ventanas, sino elementos de ventana, y no exponen un handle de ventana (aunque siempre puedes obtener un
HWND para un elemento mediante las clases de interoperabilidad con ventanas,
WindowInteropHelper), y por supuesto
WPF usa controles diferentes a los de
WinForms, son controles más amplios y con muchas propiedades distintas. Ah, y como ya dije,
WinForms utiliza una unidad de medida fija del pixel de hardware, y
WPF una unidad independiente al hardware, los problemas con cambios de DPI y/o de resoluciones son cosa del pasado.
Por si lo de arriba fuese poco, al trabajar en la IDE de
Visual Studio para
WPF verás muchos cambios en el diseñador de la UI, es completamente diferente y además tendrás que manejar el lenguaje de formato
XAML, además, al aprender programación en
WPF se aprende el concepto de separar el modelo de datos, de la UI, algo que puede costar entender viniendo de
WinForms ...puesto que basicamente no se hace, y aquí entra en juego tener claros conceptos como el
Binding (
Data Binding,
Element Binding,
Template Binding, etc) y
Dependency Properties.
En resumen, la migración de
WinForms a querer aprender
WPF no es algo que se pueda llevar a cabo en un día, ni en unas semanas tampoco,
WPF es una tecnología muy distinta, sofisticada y más completa que
WinForms, esto implica que se requiera mucha más práctica y aprendizaje del tiempo de aprendizaje que alguien pueda necesitar para aprender a manejar
WinForms,
WPF de por si es algo más complejo en comparación con
WinForms (en todos los aspectos inimaginables) y si vas con la idea de aprender las cosas rápido pues... te vas a acabar frustrando antes de haber empezado.
mi preocupación es si podré utilizar los controles que tengo de WinForms lo digo porque todo el código trabaja con esos controles :S
Poder, puedes, con el componente
WindowsFormsHost:
...pero si lo haces, entonces estarás en la misma situación que antes. En su lugar deberías utilizar los controles equivalentes que se exponen en el framework de
WPF.
Si vas a introducirte en el mundo de
WPF, entonces olvida todo lo que aprendiste sobre
WinForms. De hecho, si finálmente aprendes
WPF, no vuelvas a utilizar
WinForms nunca más... por que hacerlo sería como involucionar en lo que lleves aprendido.
Saludos