TOC

This article has been localized into German by the community.

Verschiedene Steuerelemente:

Das WebBrowser Steuerelement

WPF kommt mit einem gebrauchsfertigen WebBrowser-Steuerelement, mit dem Sie einen kompletten Webbrowser in Ihrer Anwendung hosten können. Das WebBrowser-Steuerelement ist eigentlich nur eine Shell um eine ActiveX-Version des Internet Explorers, aber da dies ein integrierter Bestandteil von Windows ist, sollte Ihre Anwendung auf allen Windows-Rechnern funktionieren, ohne dass zusätzliche Komponenten installiert werden müssen.

Ich habe die Dinge in diesem Artikel etwas anders gemacht: Anstatt mit einem sehr begrenzten Beispiel zu beginnen und es dann zu ergänzen, habe ich nur ein einziges, aber komplexeres Beispiel erstellt. Es zeigt, wie einfach es ist, einen kleinen Webbrowser zum Laufen zu bringen. Es ist sehr einfach in seiner Funktionalität, aber Sie können es leicht erweitern, wenn Sie wollen. So sieht es aus:

Schauen wir nun auf den Code:

<Window x:Class="WpfTutorialSamples.Misc_controls.WebBrowserControlSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WebBrowserControlSample" Height="300" Width="450">
    <Window.CommandBindings>
        <CommandBinding Command="NavigationCommands.BrowseBack" CanExecute="BrowseBack_CanExecute" Executed="BrowseBack_Executed" />
        <CommandBinding Command="NavigationCommands.BrowseForward" CanExecute="BrowseForward_CanExecute" Executed="BrowseForward_Executed" />
        <CommandBinding Command="NavigationCommands.GoToPage" CanExecute="GoToPage_CanExecute" Executed="GoToPage_Executed" />
    </Window.CommandBindings>
    <DockPanel>
        <ToolBar DockPanel.Dock="Top">
            <Button Command="NavigationCommands.BrowseBack">
                <Image Source="/WpfTutorialSamples;component/Images/arrow_left.png" Width="16" Height="16" />
            </Button>
            <Button Command="NavigationCommands.BrowseForward">
                <Image Source="/WpfTutorialSamples;component/Images/arrow_right.png" Width="16" Height="16" />
            </Button>
            <Separator />
            <TextBox Name="txtUrl" Width="300" KeyUp="txtUrl_KeyUp" />
            <Button Command="NavigationCommands.GoToPage">
                <Image Source="/WpfTutorialSamples;component/Images/world_go.png" Width="16" Height="16" />
            </Button>
        </ToolBar>
        <WebBrowser Name="wbSample" Navigating="wbSample_Navigating"></WebBrowser>
    </DockPanel>
</Window>
using System;
using System.Windows;
using System.Windows.Input;

namespace WpfTutorialSamples.Misc_controls
{
	public partial class WebBrowserControlSample : Window
	{
		public WebBrowserControlSample()
		{
			InitializeComponent();
			wbSample.Navigate("http://www.wpf-tutorial.com");
		}

		private void txtUrl_KeyUp(object sender, KeyEventArgs e)
		{
			if(e.Key == Key.Enter)
				wbSample.Navigate(txtUrl.Text);
		}

		private void wbSample_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e)
		{
			txtUrl.Text = e.Uri.OriginalString;
		}

		private void BrowseBack_CanExecute(object sender, CanExecuteRoutedEventArgs e)
		{
			e.CanExecute = ((wbSample != null) && (wbSample.CanGoBack));
		}

		private void BrowseBack_Executed(object sender, ExecutedRoutedEventArgs e)
		{
			wbSample.GoBack();
		}

		private void BrowseForward_CanExecute(object sender, CanExecuteRoutedEventArgs e)
		{
			e.CanExecute = ((wbSample != null) && (wbSample.CanGoForward));
		}

		private void BrowseForward_Executed(object sender, ExecutedRoutedEventArgs e)
		{
			wbSample.GoForward();
		}

		private void GoToPage_CanExecute(object sender, CanExecuteRoutedEventArgs e)
		{
			e.CanExecute = true;
		}

		private void GoToPage_Executed(object sender, ExecutedRoutedEventArgs e)
		{
			wbSample.Navigate(txtUrl.Text);
		}

	}
}

Der Code mag auf den ersten Blick etwas umfangreich erscheinen, aber wenn man einen zweiten Blick darauf wirft, wird man feststellen, dass es eine Menge Wiederholungen gibt.

Beginnen wir mit dem XAML-Teil. Beachten Sie, dass ich mehrere Konzepte verwende, die an anderer Stelle in diesem Tutorial behandelt werden, einschließlich des ToolBar-Controls und der WPF-Befehle. Die ToolBar wird verwendet, um eine Reihe von Schaltflächen für den Vor- und Rücklauf zur Verfügung zu stellen. Danach haben wir eine Adressleiste zur Eingabe und Anzeige der aktuellen URL sowie eine Schaltfläche zur Navigation zur eingegebenen URL.

Unterhalb der Symbolleiste befindet sich das eigentliche WebBrowser-Control. Wie Sie sehen können, benötigen wir dazu nur eine einzige Zeile XAML - in diesem Fall abonnieren wir das Ereignis Navigating, das auftritt, sobald der WebBrowser die Navigation zu einer URL startet.

In Code-behind navigieren wir zunächst zu einer URL, die sich bereits im Konstruktor des Fensters befindet, um statt eines leeren Controls sofort etwas anzuzeigen. Wir haben dann das Ereignis txtUrl_KeyUp, in dem wir prüfen, ob der Benutzer die Eingabetaste innerhalb der Adressleiste gedrückt hat - wenn ja, navigieren wir zu der eingegebenen URL.

Das Ereignis wbSample_Navigating sorgt dafür, dass die Adressleiste bei jedem Start einer neuen Navigation aktualisiert wird. Dies ist wichtig, da wir wollen, dass die aktuelle URL angezeigt wird, unabhängig davon, ob der Benutzer die Navigation durch Eingabe einer neuen URL oder durch Anklicken eines Links auf der Webseite gestartet hat.

Der letzte Teil des Code-behind ist die einfache Handhabung unserer Befehle: Zwei für die Vor- und Zurück-Buttons, wobei wir die CanGoBack und CanGoForward verwenden, um zu entscheiden, ob sie ausgeführt werden können, und die GoBack und GoForward Methoden, um die eigentliche Arbeit zu erledigen. Dies ist sehr üblich, wenn es um WPF-Befehle geht, wie im Abschnitt Befehle dieses Tutorials beschrieben.

Für den letzten Befehl lassen wir ihn immer ausführen, und wenn er das tut, verwenden wir wieder die Navigate()-Methode.

Zusammenfassung

Wie Sie sehen können, wird das Hosten und Verwenden eines kompletten Webbrowsers innerhalb Ihrer Anwendung mit dem WebBrowser-Steuerelement sehr einfach. Sie sollten jedoch beachten, dass die WPF-Version des WebBrowsers im Vergleich zur WinForms-Version etwas eingeschränkt ist, aber für die grundlegende Verwendung und Navigation funktioniert sie gut.

Wenn Sie stattdessen die WinForms-Version verwenden möchten, können Sie den WindowsFormsHost verwenden, der an anderer Stelle in diesem Tutorial erläutert wird.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!