Interoperabilidad entre Windows y WPF
WPF y Windows Forms presentan dos arquitecturas diferentes para crear interfaces de aplicaciones. El espacio de nombres System.Windows.Forms.Integration proporciona clases que habilitan los escenarios de interoperación más comunes. Las dos clases clave que implementan las funciones de interoperación son WindowsFormsHost y ElementHost. En este tema se describe qué escenarios de interoperación se admiten y cuáles no.
Nota |
---|
Se presta especial atención al escenario de control híbrido.Un control híbrido tiene un control de una tecnología anidado en un control de otra tecnología.También se denomina una interoperación anidada.Un control híbrido de varios niveles tiene más de un nivel de anidamiento de controles híbridos.Un ejemplo de una interoperación anidada de varios niveles es un control de Windows Forms que contiene un control de WPF, que contiene otro control de Windows Forms.No se admiten los controles híbridos de varios niveles. |
Este tema contiene las secciones siguientes.
- Hospedar controles de Windows Forms en WPF
- Hospedar controles de WPF en Windows Forms
- Temas relacionados
Hospedar controles de Windows Forms en WPF
Se admiten los escenarios de interoperación siguientes cuando un control de WPF hospeda un control de Windows Forms:
El control de WPF puede hospedar uno o más controles de Windows Forms mediante XAML.
Puede hospedar uno o más controles de Windows Forms mediante código.
Puede hospedar controles contenedores de Windows Forms que contienen otros controles de Windows Forms.
Puede hospedar un formulario principal-detalle con un elemento principal de WPF y detalles de Windows Forms.
Puede hospedar un formulario principal-detalle con un elemento principal de Windows Forms y detalles de WPF.
Puede hospedar uno o más controles ActiveX.
Puede hospedar uno o más controles compuestos.
Puede hospedar controles híbridos mediante Extensible Application Markup Language (XAML).
Puede hospedar controles híbridos mediante código.
Compatibilidad de diseño
En la lista siguiente se describen las limitaciones conocidas cuando el elemento WindowsFormsHost intenta integrar su control de Windows Forms hospedado en el sistema de diseño de WPF.
En algunos casos, no se puede cambiar el tamaño de los controles de Windows Forms o únicamente se pueden ajustar a dimensiones concretas. Por ejemplo, un control ComboBox de Windows Forms únicamente admite un alto, que se define basándose en el tamaño de fuente de control. En un diseño dinámico de WPF, en que se da por hecho que los elementos pueden ajustarse verticalmente, un control ComboBox hospedado no se ajustará según lo esperado.
Los controles de Windows Forms no se pueden girar ni sesgar. Por ejemplo, al girar la interfaz de usuario 90 grados, los controles de Windows Forms hospedados mantendrán su posición vertical.
En la mayoría de los casos, los controles de Windows Forms no admiten el ajuste de escala proporcional. Aunque se ajustará la escala de las dimensiones totales del control, es posible que el tamaño de los controles secundarios y de los elementos componentes del control no cambien según lo esperado. Esta limitación depende de en qué medida admita cada control de Windows Forms el ajuste de escala.
En una interfaz de usuario de WPF, puede cambiar el orden z de los elementos para controlar el comportamiento de superposición. Un control de Windows Forms hospedado se dibuja en un indicador de ventana (HWND) independiente, por lo que siempre se dibuja encima de los elementos de WPF.
Los controles de Windows Forms admiten el ajuste automático de escala basado en el tamaño de fuente. En una interfaz de usuario de WPF, al cambiar el tamaño de fuente no se cambia el tamaño del diseño completo, aunque es posible que algunos elementos individuales ajusten su tamaño dinámicamente.
Propiedades de ambiente
Algunas de las propiedades de ambiente de los controles de WPF tienen equivalentes en Windows Forms. Estas propiedades de ambiente se propagan a los controles de Windows Forms hospedados y expuestos como propiedades públicas en el control WindowsFormsHost. El control WindowsFormsHost convierte cada propiedad de ambiente de WPF en su equivalente en Windows Forms.
Para obtener más información, consulte Asignación de propiedades en formularios Windows Forms y WPF.
Comportamiento
En la tabla siguiente se describe el comportamiento de interoperación.
Behavior |
Compatible |
No compatible |
---|---|---|
Transparencia |
La representación de los controles de Windows Forms admite la transparencia. El fondo del control de WPF primario se puede convertir en el fondo de los controles de Windows Forms hospedados. |
Algunos controles de Windows Forms no admiten la transparencia. Por ejemplo, los controles TextBox y ComboBox no serán transparentes cuando se hospeden en WPF. |
Desplazamiento mediante la tecla TAB |
El orden de desplazamiento mediante la tecla TAB para los controles de Windows Forms hospedados es el mismo que cuando dichos controles se encuentran hospedados en una aplicación basada en Windows Forms. El desplazamiento desde un control de WPF hasta un control de Windows Forms utilizando la tecla TAB y las teclas MAYÚS+TAB funciona del modo habitual. Los controles de Windows Forms que tienen una propiedad TabStop establecida en el valor false no reciben el foco cuando el usuario se desplaza de un control a otro mediante la tecla TAB.
|
No es aplicable |
Navegación con las teclas de dirección |
|
No es aplicable |
Aceleradores |
Los aceleradores funcionan como de costumbre, excepto cuando se indique otra cosa en la columna "No compatible". |
Los aceleradores duplicados entre tecnologías no funcionan como los aceleradores duplicados ordinarios. Cuando un acelerador se duplica entre dos tecnologías, y al menos uno de ellos se encuentra en un control de Windows Forms y el otro en un control de WPF, el control de Windows Forms recibe siempre el acelerador. El foco no alterna entre los dos controles cuando se presiona el acelerador duplicado. |
Teclas de método abreviado |
Las teclas de método abreviado funcionan como de costumbre, excepto cuando se indique otra cosa en la columna "No compatible". |
|
AcceptsReturn, AcceptsTab y otros comportamientos específicos del control |
Las propiedades que cambian el comportamiento predeterminado del teclado funcionan como de costumbre, suponiendo que el control de Windows Forms invalide el método IsInputKey para devolver true. |
Los controles de Windows Forms que cambian el comportamiento predeterminado del teclado controlando el evento KeyDown se procesan en último lugar en el control host de WPF. Dado que estos controles se procesan en último lugar, pueden dar lugar a comportamientos inesperados. |
Eventos Enter y Leave |
Cuando el foco no va al control contenedor ElementHost, se provocan los eventos Enter y Leave como de costumbre cuando el foco cambia en un control WindowsFormsHost único. |
Los eventos Enter y Leave no se provocan cuando se producen los cambios de foco siguientes:
|
Multithreading |
Se admiten todas las variedades de multithreading. |
Tanto la tecnología WPF como Windows Forms suponen la utilización de un modelo de simultaneidad de un solo subproceso. Durante la depuración, las llamadas a los objetos de marco de otros subprocesos iniciarán una excepción para aplicar este requisito. |
Seguridad |
Todos los escenarios de interoperación requieren plena confianza. |
Ningún escenario de interoperación se permite en confianza parcial. |
Accesibilidad |
Se admiten todos los escenarios de accesibilidad. Los productos de tecnología de ayuda funcionan correctamente cuando se utilizan para aplicaciones híbridas que contienen controles de Windows Forms y de WPF. |
No es aplicable |
Portapapeles |
Todas las operaciones del Portapapeles funcionan como de costumbre. Esto incluye cortar y pegar entre controles de Windows Forms y de WPF. |
No es aplicable |
Característica de arrastrar y colocar |
Todas las operaciones de arrastrar y colocar funcionan como de costumbre. Esto incluye las operaciones entre controles de Windows Forms y de WPF. |
No es aplicable |
Hospedar controles de WPF en Windows Forms
Se admiten los escenarios de interoperación siguientes cuando un control de Windows Forms hospeda un control de WPF:
Hospedar uno o varios controles de WPF mediante código.
Asociar una hoja de propiedades a uno o más controles de WPF hospedados.
Hospedar una o más páginas de WPF en un formulario.
Iniciar una ventana de WPF.
Hospedar un formulario principal-detalle con un elemento principal de Windows Forms y detalles de WPF.
Hospedar un formulario principal-detalle con un elemento principal de WPF y detalles de Windows Forms.
Hospedar controles de WPF personalizados.
Hospedar controles híbridos.
Propiedades de ambiente
Algunas de las propiedades de ambiente de los controles de Windows Forms tienen equivalentes en WPF. Estas propiedades de ambiente se propagan a los controles de WPF hospedados y expuestos como propiedades públicas en el control ElementHost. El control ElementHost convierte cada propiedad de ambiente de Windows Forms en su equivalente en WPF.
Para obtener más información, consulte Asignación de propiedades en formularios Windows Forms y WPF.
Comportamiento
En la tabla siguiente se describe el comportamiento de interoperación.
Behavior |
Compatible |
No compatible |
---|---|---|
Transparencia |
La representación de los controles de WPF admite la transparencia. El fondo del control de Windows Forms primario se puede convertir en el fondo de los controles de WPF hospedados. |
No es aplicable |
Multithreading |
Se admiten todas las variedades de multithreading. |
Tanto la tecnología WPF como Windows Forms suponen la utilización de un modelo de simultaneidad de un solo subproceso. Durante la depuración, las llamadas a los objetos de marco de otros subprocesos iniciarán una excepción para aplicar este requisito. |
Seguridad |
Todos los escenarios de interoperación requieren plena confianza. |
Ningún escenario de interoperación se permite en confianza parcial. |
Accesibilidad |
Se admiten todos los escenarios de accesibilidad. Los productos de tecnología de ayuda funcionan correctamente cuando se utilizan para aplicaciones híbridas que contienen controles de Windows Forms y de WPF. |
No es aplicable |
Portapapeles |
Todas las operaciones del Portapapeles funcionan como de costumbre. Esto incluye cortar y pegar entre controles de Windows Forms y de WPF. |
No es aplicable |
Característica de arrastrar y colocar |
Todas las operaciones de arrastrar y colocar funcionan como de costumbre. Esto incluye las operaciones entre controles de Windows Forms y de WPF. |
No es aplicable |
Vea también
Tareas
Tutorial: Hospedar un control de Windows Forms en WPF
Referencia
Conceptos
Tutorial: Hospedar un control compuesto de formularios Windows Forms en WPF
Tutorial: Hospedar un control compuesto de WPF en formularios Windows Forms
Asignación de propiedades en formularios Windows Forms y WPF