Restricciones de los controles WinForms en aplicaciones de WPF

Hemos visto en los anteriores posts como utilizar controles WinForms en aplicaciones WPF y al revés, pero al introducir controles WinForms en nuestras aplicaciones WPF debemos de tener en cuenta ciertos aspectos.

  • Windows Forms tiene unas limitaciones que WPF no tiene, por ejemplo al incluirlos en el control WindowsFormsHost no significa que podamos rotarlo, este control no lo soporta y no lo hace.

 

  • Windows Forms tiene un hwnd por cada form, en cambio WPF utiliza el mismo hwnd para todo su contenido, esto tiene el efecto que nustro control Windos Forms estara siempre en el Top de nuestra aplicación, por mucho que cambiamos el Z-Index este lo ignorara y se pondrá en el top.

 

  • WindowsFormsHost y ElementHost tiene la propiedad Child que es donde hosteamos nuestros controles, no es una colección, con lo que tenemos la restricción de un control por host.

 

  • WPF y Windows Forms tienen diferentes modelos de escalado, con lo que al realizar el escalado de nos podemos encontrar con sorpresas desagradables.

 

  • El foco trabaja de diferente manera en WPF y Windows Forms, de manera que si tenemos un control WinForm dentro de nuestro WindowsFormsHost y este control tiene el foco en un textbox, si minimizamos nuestra aplicación de WPF y la restauramos el foco lo tendrá el control WindowsFormsHost pero no el control WinForm, con lo que habremos perdido el foco del TextBox

 

  • La propiedad opacidad no trabaja en WindowsFormsHost .

 

  • Cuando mezclas Windows Forms y WPF te debes asegurar que ElementHost o WindowsFormsHost estan disposed o tendras memory leaaks. WPD dispose tus WindowsFormsHost cuando la aplicación se cierra.

Seguro que faltarán, así que como siempre todo el monte no es orégano

Un comentario sobre “Restricciones de los controles WinForms en aplicaciones de WPF”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *