Compartir a través de


Tutorial: Hospedar un control compuesto de Windows Presentation Foundation en formularios Windows Forms

Actualización: noviembre 2007

En este tutorial se muestra cómo crear un control de WPF compuesto y hospedarlo en controles y formularios de formularios Windows Forms mediante el control ElementHost.

En este tutorial, se implementa un UserControl de WPF que contiene dos controles secundarios. UserControl muestra un cono tridimensional (3D). Representar objetos 3D es mucho más fácil con WPF que con formularios Windows Forms. Por consiguiente, resulta lógico hospedar una clase UserControl de WPF para crear los gráficos 3D en formularios Windows Forms.

Entre las tareas ilustradas en este tutorial se incluyen:

  • Crear el UserControl de WPF.

  • Crear el proyecto host de formularios Windows Forms.

  • Hospedar el UserControl de WPF.

Para ver un listado de código completo de las tareas ilustradas en este tutorial, vea Ejemplo Hosting a Windows Presentation Foundation Composite Control in Windows Forms.

Nota   Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

  • Visual Studio 2008.

Crear el control de usuario

Para crear el control de usuario

  1. Cree un proyecto de biblioteca de controles de usuario de WPF denominado HostingWpfUserControlInWf.

  2. Abra UserControl1.xaml en WPF Designer.

  3. Reemplace el código generado con el siguiente código.

    En este código se define un control de usuario (System.Windows.Controls.UserControl) que contiene dos controles secundarios. El primer control secundario es un control System.Windows.Controls.Label; el segundo es un control Viewport3D que muestra un cono 3D.

Crear el proyecto host de formularios Windows Forms

Para crear el proyecto host

  1. Agregue un proyecto de aplicación de Windows denominado WpfUserControlHost a la solución. Para obtener más información, vea Agregar nuevo proyecto (Cuadro de diálogo).

  2. En el Explorador de soluciones, agregue una referencia al ensamblado WindowsFormsIntegration, denominado WindowsFormsIntegration.dll.

  3. Agregue referencias a los ensamblados de WPF siguientes:

    • PresentationCore

    • PresentationFramework

    • WindowsBase

  4. Agregue una referencia al proyecto HostingWpfUserControlInWf.

  5. En el Explorador de soluciones, configure el proyecto WpfUserControlHost como proyecto de inicio.

Hospedar el control de usuario de Windows Presentation Foundation

Para hospedar el control de usuario

  1. En el Diseñador de Windows Forms, abra Form1.

  2. En la ventana Propiedades, seleccione Eventos y haga doble clic en el evento Load para crear un controlador de eventos.

    Se abrirá el Editor de código para el controlador de eventos Form1_Load recién generado.

  3. Reemplace el código de Form1.cs con el código siguiente.

    El controlador de eventos Form1_Load crea una instancia de UserControl1 y la agrega a la colección de controles secundarios del control ElementHost. El control ElementHost se agrega a la colección de controles secundarios del formulario.

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Text
    Imports System.Windows.Forms
    
    Imports System.Windows.Forms.Integration
    
    Public Class Form1
        Inherits Form
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ' Create the ElementHost control for hosting the
            ' WPF UserControl.
            Dim host As New ElementHost()
            host.Dock = DockStyle.Fill
    
            ' Create the WPF UserControl.
            Dim uc As New HostingWpfUserControlInWf.UserControl1()
    
            ' Assign the WPF UserControl to the ElementHost control's
            ' Child property.
            host.Child = uc
    
            ' Add the ElementHost control to the form's
            ' collection of child controls.
            Me.Controls.Add(host)
        End Sub
    
    End Class
    
  4. Presione F5 para generar y ejecutar la aplicación.

Vea también

Tareas

Ejemplo Hosting a Windows Presentation Foundation Composite Control in Windows Forms

Conceptos

Tutorial: Hospedar un control de Windows Presentation Foundation en formularios Windows Forms

Tutorial: Hospedar un control compuesto de formularios Windows Forms en Windows Presentation Foundation

Referencia

ElementHost

WindowsFormsHost

Otros recursos

WPF Designer

Temas "Cómo..." de migración e interoperabilidad