Przewodnik: hostowanie kontrolki ActiveX w WPF
Aby umożliwić ulepszoną interakcję z przeglądarkami, możesz użyć kontrolek Microsoft ActiveX w aplikacji opartej na WPF. W tym przewodniku pokazano, jak można hostować program Microsoft Windows Media Player jako kontrolkę na stronie WPF.
Zadania przedstawione w tym przewodniku obejmują:
Tworzenie projektu.
Tworzenie kontrolki ActiveX.
Hostowanie kontrolki ActiveX na stronie WPF.
Po ukończeniu tego przewodnika dowiesz się, jak używać kontrolek Microsoft ActiveX w aplikacji opartej na WPF.
Warunki wstępne
Do ukończenia tego przewodnika potrzebne są następujące składniki:
Program Microsoft Windows Media Player zainstalowany na komputerze, na którym zainstalowano program Visual Studio.
Visual Studio 2010.
Tworzenie projektu
Aby utworzyć i skonfigurować projekt
Utwórz projekt aplikacji WPF o nazwie
HostingAxInWpf
.Dodaj projekt Biblioteka kontrolek formularzy systemu Windows do rozwiązania i nadaj projektowi nazwę
WmpAxLib
.W projekcie WmpAxLib dodaj odwołanie do zestawu Windows Media Player o nazwie wmp.dll.
Otwórz przybornika.
Kliknij prawym przyciskiem myszyprzybornika
, a następnie kliknij Wybierz elementy .Kliknij kartę składniki COM, wybierz sterowanie Windows Media Player, a następnie kliknij przycisk OK.
Kontrolka Windows Media Player jest dodawana do przybornika .
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy plik UserControl1, a następnie kliknij Zmień nazwę.
Zmień nazwę na
WmpAxControl.vb
lubWmpAxControl.cs
, w zależności od języka.Jeśli zostanie wyświetlony monit o zmianę nazwy wszystkich odnośników, kliknij przycisk Tak.
Tworzenie kontrolki ActiveX
Program Visual Studio automatycznie generuje klasę otoki AxHost dla kontrolki Microsoft ActiveX po dodaniu kontrolki do powierzchni projektowej. Poniższa procedura tworzy zarządzany zestaw o nazwie AxInterop.WMPLib.dll.
Aby utworzyć kontrolkę ActiveX
Otwórz WmpAxControl.vb lub WmpAxControl.cs w programie Windows Forms Designer.
Dodaj z przybornikakontrolkę Windows Media Player do powierzchni projektowej.
W oknie Właściwości ustaw wartość właściwości Dock kontrolki Windows Media Player na wartość Fill.
Skompiluj projekt biblioteki kontrolek WmpAxLib.
Hostowanie kontrolki ActiveX na stronie WPF
Aby hostować kontrolkę ActiveX
W projekcie HostingAxInWpf dodaj odwołanie do wygenerowanego zestawu współdziałania ActiveX.
Ten zestaw ma nazwę AxInterop.WMPLib.dll i został dodany do folderu Debug projektu WmpAxLib podczas importowania kontrolki Windows Media Player.
Dodaj odwołanie do zestawu WindowsFormsIntegration o nazwie WindowsFormsIntegration.dll.
Dodaj odwołanie do zestawu Windows Forms o nazwie System.Windows.Forms.dll.
Otwórz plik MainWindow.xaml w projektancie WPF.
Nadaj Grid elementowi nazwę
grid1
.<Grid Name="grid1"> </Grid>
W widoku projektu lub widoku XAML wybierz element Window.
W oknie Właściwości kliknij kartę Zdarzenia.
Kliknij dwukrotnie zdarzenie Loaded.
Wstaw następujący kod, aby obsłużyć zdarzenie Loaded.
Ten kod tworzy wystąpienie kontrolki WindowsFormsHost i dodaje wystąpienie kontrolki
AxWindowsMediaPlayer
jako jej element podrzędny.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
Naciśnij F5, aby skompilować i uruchomić aplikację.
Zobacz też
.NET Desktop feedback