Principales respuestas
No se activa ComboBox de WPF dentro de WinForm

Pregunta
-
Hola!! Que tal??
Antes que nada, GRACIAS! por leer este problema:
En un formulario de Windows, tengo colocados 2 páneles (llamémosles panel 1 y panel 2), dentro de los cuales coloco más WinForms.
Dentro de los WinForms colocados ahí, tengo alojados controles de usuario de WPF (específicamente un ComboBox). En la ejecución del programa, habilito y deshabilito el panel 2 varias veces (al hacerlo, el formulario contenido queda inaccesible), el panel 1 casi siempre está activo. El problema es el siguiente: al activar el panel 2 y cargarle un nuevo formulario, los controles de usuario de WPF que tengo alojados dentro de ese formulario, no responden, es decir, ni siquiera cambian de color cuando el mouse pasa sobre ellos, aún y cuando los controles de usuario que se encuentran en el formulario del panel 1 y todos los demás controles del formulario en el panel 2 responden perfectamente. Aclaro que para ambos formularios, el código que le implemento a los controles de usuario, es exactamente el mismo.
Alguien tiene alguna idea de lo que sucede??
De antemano, Agradezco sus respuestas!!
Respuestas
-
Hola Sandro!! Gracias por responder...
Si, la aplicación es de Windows Form, y creo que diferimos en algo: Si se pueden colocar controles de WPF en Windows Form. El procedimiento es similar al que mencionaste para WPF: Se añade al proyecto un UserControl y se selecciona un Control de WPF, en la ventana que abre de WPF, se coloca el control que se desee utilizar, se compila el proyecto, y al terminar, ya se puede utilizar dicho control en el WinForm, claro está que, como mencionaste, se debe incluir dentro de un ElementHost. :D
Pero continuando con la pregunta, creo que ya resolvi el problema, no se si sea la mejor forma, y estoy segura que puede haber una mejor solución, pero por el momento, me ha ayudado bastante:
Exactamente después de habilitar el panel 2 (dentro del formulario que tengo colocado ahi), creo nuevamente mediante código los ElementHost que contienen los combos de WPF.//Este es el ejemplo del código que usé... WPFComboBox comboWPF = new WPFComboBox(); // WPFComboBox es el nombre del control de usuario de WPF formularioPrincipal.panel2.Enabled = true; //Código para activar el panel 2 frmEnPanel2.Controls.Remove(eHost); eHost = new ElementHost(); eHost.Child = comboWPF; frmActivo.Controls.Add(eHost);
Repito, no se si sea la mejor forma, pero a mi me ha funcionado...
Saludos a todos!!!...- Propuesto como respuesta David_González lunes, 8 de marzo de 2010 7:26
- Marcado como respuesta Josue YerayMVP, Moderator domingo, 3 de abril de 2011 6:51
Todas las respuestas
-
Cecy, estas creando una aplicación WPF o Windows?
Si estas en una aplicación windows el problema esta ahí ya que no se pueden usar controles de WPF en Windows Form. Si podes usar controles de Windows Form en aplicaciones WPF.
Para esto tenes que crear un host que será el contenedor de los controles winform y ahí adentro pones tus controles windows.
Si necesitas ayuda para hacer el hosting de los controles sobre WPF aca de dejo un link que te va a ser de utilidad.
http://msdn.microsoft.com/en-us/library/ms742875.aspx
Saludos,
Sandro D. Garcia
Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
-----
Please, if this message helps you, remember mark it as response, may be can help more people with same problem.
-----
Mi Blog -
Hola Sandro!! Gracias por responder...
Si, la aplicación es de Windows Form, y creo que diferimos en algo: Si se pueden colocar controles de WPF en Windows Form. El procedimiento es similar al que mencionaste para WPF: Se añade al proyecto un UserControl y se selecciona un Control de WPF, en la ventana que abre de WPF, se coloca el control que se desee utilizar, se compila el proyecto, y al terminar, ya se puede utilizar dicho control en el WinForm, claro está que, como mencionaste, se debe incluir dentro de un ElementHost. :D
Pero continuando con la pregunta, creo que ya resolvi el problema, no se si sea la mejor forma, y estoy segura que puede haber una mejor solución, pero por el momento, me ha ayudado bastante:
Exactamente después de habilitar el panel 2 (dentro del formulario que tengo colocado ahi), creo nuevamente mediante código los ElementHost que contienen los combos de WPF.//Este es el ejemplo del código que usé... WPFComboBox comboWPF = new WPFComboBox(); // WPFComboBox es el nombre del control de usuario de WPF formularioPrincipal.panel2.Enabled = true; //Código para activar el panel 2 frmEnPanel2.Controls.Remove(eHost); eHost = new ElementHost(); eHost.Child = comboWPF; frmActivo.Controls.Add(eHost);
Repito, no se si sea la mejor forma, pero a mi me ha funcionado...
Saludos a todos!!!...- Propuesto como respuesta David_González lunes, 8 de marzo de 2010 7:26
- Marcado como respuesta Josue YerayMVP, Moderator domingo, 3 de abril de 2011 6:51
-
Hola Cecy.No tengo muy claro como tienes los paneles y no he podido replicar el comportamiento.Tienes una aplicacion WinForms con 2 Panels, dentro de estos paneles vas insertando o eliminando controles de usuario WinForms que a su vez contienen Controles de usuario WPF y otros controles WinForms.¿Eso es asi?.Intento replicar el problema por curiosidad pero no consigo un mal comportamiento.
Saludos
David González