Tutorial: Hospedar un control ActiveX en WPF
Para habilitar la interacción mejorada con los exploradores, puede usar los controles ActiveX de Microsoft en la aplicación basada en WPF. En este tutorial se muestra cómo puede hospedar el Reproductor de Windows Media de Microsoft como control en una página de WPF.
Las tareas ilustradas en este tutorial incluyen:
Crear el proyecto.
Crear el control ActiveX.
Hospedar el control ActiveX en una página de WPF.
Cuando haya completado este tutorial, comprenderá cómo usar los controles ActiveX de Microsoft en la aplicación basada en WPF.
Requisitos previos
Necesitará los componentes siguientes para completar este tutorial:
Reproductor de Windows Media de Microsoft instalado en el equipo donde está instalado Visual Studio.
Visual Studio 2010.
Crear el proyecto
Para crear y configurar el proyecto
Cree un proyecto de aplicación WPF denominado
HostingAxInWpf
.Agregue un proyecto de biblioteca de controles de Windows Forms a la solución y asigne al proyecto el nombre
WmpAxLib
.En el proyecto WmpAxLib, agregue una referencia al ensamblado Reproductor de Windows Media, que se denomina wmp.dll.
Abra el Cuadro de herramientas.
Haga clic con el botón secundario en el Cuadro de herramientas y, a continuación, haga clic en Elegir elementos.
Haga clic en la pestaña Componentes COM, seleccione el control Reproductor de Windows Media y, a continuación, haga clic en Aceptar.
El control Reproductor de Windows Media se agrega al Cuadro de herramientas.
En el Explorador de soluciones, haga clic con el botón derecho en el archivo UserControl1 y haga clic en Cambiar nombre.
Cambie el nombre a
WmpAxControl.vb
oWmpAxControl.cs
, según el idioma.Si se le pide que cambie el nombre de todas las referencias, haga clic en Sí.
Creación del control ActiveX
Visual Studio genera automáticamente una clase contenedora AxHost para un control ActiveX de Microsoft cuando el control se agrega a una superficie de diseño. El procedimiento siguiente crea un ensamblado administrado denominado AxInterop.WMPLib.dll.
Para crear el control ActiveX
Abra WmpAxControl.vb o WmpAxControl.cs en el Diseñador de Windows Forms.
En el Cuadro de herramientas, agregue el control Reproductor de Windows Media a la superficie de diseño.
En el ventana Propiedades, establezca el valor de la propiedad Dock del control Reproductor de Windows Media en Fill.
Compile el proyecto de biblioteca de controles WmpAxLib.
Hospedamiento del control ActiveX en una página de WPF
Para hospedar el control ActiveX
En el proyecto HostingAxInWpf, agregue una referencia al ensamblado de interoperabilidad ActiveX que se ha generado.
Este ensamblado se denomina AxInterop.WMPLib.dll y se agregó a la carpeta Depuración del proyecto WmpAxLib al importar el control Reproductor de Windows Media.
Agregue una referencia al ensamblado WindowsFormsIntegration, denominado WindowsFormsIntegration.dll.
Agregue una referencia al ensamblado de Windows Forms, que se denomina System.Windows.Forms.dll.
Abra MainWindow.xaml en WPF Designer.
Asígnele al elemento Grid el nombre
grid1
.<Grid Name="grid1"> </Grid>
En la vista de diseño o en la vista XAML, seleccione el elemento Window.
En la ventana Propiedades, haga clic en la pestaña Eventos.
Haga doble clic en el evento Loaded.
Inserte el código siguiente para controlar el evento Loaded.
Este código crea una instancia del control WindowsFormsHost y agrega una instancia del control
AxWindowsMediaPlayer
como su elemento secundario.private void Window_Loaded(object sender, RoutedEventArgs e) { // Create the interop host control. System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost(); // Create the ActiveX control. WmpAxLib.AxWindowsMediaPlayer axWmp = new WmpAxLib.AxWindowsMediaPlayer(); // Assign the ActiveX control as the host control's child. host.Child = axWmp; // Add the interop host control to the Grid // control's collection of child controls. this.grid1.Children.Add(host); // Play a .wav file with the ActiveX control. axWmp.URL = @"C:\Windows\Media\tada.wav"; }
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) ' Create the interop host control. Dim host As New System.Windows.Forms.Integration.WindowsFormsHost() ' Create the ActiveX control. Dim axWmp As New AxWMPLib.AxWindowsMediaPlayer() ' Assign the ActiveX control as the host control's child. host.Child = axWmp ' Add the interop host control to the Grid ' control's collection of child controls. Me.grid1.Children.Add(host) ' Play a .wav file with the ActiveX control. axWmp.URL = "C:\Windows\Media\tada.wav" End Sub
Presione F5 para compilar y ejecutar la aplicación.
Vea también
.NET Desktop feedback