Integrar WPF en Windows Forms
En este tutorial se explica cómo se puede integrar Windows Presentation Foundation en un Windows Forms, lo cual puede ser conveniente realizarlo para casos específicos ya que en WPF se pueden hacer diseños muy atractivos, pero muchas de las aplicaciones ya desarrolladas están en Windows Forms.
1. Para el ejemplo se crea la siguiente estructura:
Estructura Solución Ejemplo |
Tenemos 2 proyectos, uno es de tipo WindowsForms y el otro es Aplicación WPF.
2. En nuestro proyecto WpfApp agregamos un UserControl, le damos apariencia y funcionalidad requerida.
Agrega UserControl |
Diseñar, agrega funcionalidad |
Se agregó:
- 1 Canvas
- 1 TextBox con el texto "Esto es WPF!"
- 1 Button y dentro un evento que lance un mensaje: "Responde a eventos WPF"
- 1 ComboBox que cambie el color del BackGround del Canvas
3. Compilar solo el proyecto WpfApp
4. Ir al proyecto Winform , agregar la referencia al otro proyecto WpfApp. Agregar un Form sencillo y dentro de este form agregar el control llamado "ElementHost":
Expandirlo |
Añadir control ElementHost |
Hay 2 maneras de invocar al form WPF:
Invocar WPF en Vista diseño: En el cuadro de tareas del control veremos un combo para seleccionar UserControls WPF. (solo objetos de ese tipo pueden ser seleccionados)
5. En el combo antes mencionado seleccionar el UserControl1 creado anteriormente
6. Correr y probar. Fijarse que responde perfectamente a los eventos y demás interacciones programadas en WPF.
- En vista diseño, y
- En Codigo
Invocar WPF en Vista diseño: En el cuadro de tareas del control veremos un combo para seleccionar UserControls WPF. (solo objetos de ese tipo pueden ser seleccionados)
5. En el combo antes mencionado seleccionar el UserControl1 creado anteriormente
6. Correr y probar. Fijarse que responde perfectamente a los eventos y demás interacciones programadas en WPF.
Responde a Eventos |
Responde Interacciones |
Invocar WPF en código: Simplemente instanciamos nuestro UserControl y lo agregamos al ElementHost.Child
WpfApp.UserControl1 uc = new WpfApp.UserControl1(); this.elementHost1.Child = uc;
Comentarios
Publicar un comentario