TOC

This article has been localized into Danish by the community.

Diverse kontroller:

WebBrowser kontrollen

WPF har en klar til brug WebBrowser kontrol, som lader dig hoste en komplet web browser i din applikation. WebBrowser kontrollen er i realiteten bare en skal omkring en ActiveX version af Internet Explorer, men eftersom den er en integreret del af Windows, bør din applikation virke på alle Windows maskiner uden krav om installation af yderligere komponenter.

Jeg har gjort tingene lidt anderledes i denne artikel: I stedet for at starte med et begrænset eksempel og derefter tilføje til det, har jeg lavet et mere komplekst eksempel. Det illustrerer hvor nemt, du kan få en lille web browser op at køre. Det er meget elementært i sin funktionalitet, men du kan nemt udvide det, hvis du ønsker det. Her er hvordan, det ser ud:

Så, lad os se på koden:

<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);
		}

	}
}

Koden synes måske lidt overvældende til at starte med, men kigger du nærmere efter, vil du se, at der er meget gentagelse i det.

Lad os starte med XAML delen. Bemærk, at jeg bruger flere koncepter, der er diskutteret andre steder i dette selvstudie, inklusive ToolBar kontrollen og WPF kommandoer. ToolBar bruges til at holde et par knapper til at navigere frem og tilbage. After det, har vi en adresselinje til indtastning og visning af den aktuelle URL, sammen med en knap til at navigere til den indtastede URL.

Under værktøjslinjen har vi den egentlige WebBrowser kontrol. Som du kan se, at bruge den kræver kun en enkelt linie XAML - i dette tilfælde abonnerer vi på Navigating hændelsen, som sker så snart, WebBrowser starter navigationen til en URL.

I code-behind starter vi med at navigere til en URL allerede i Window konstruktøren, for at have noget at vise med det samme i stedet for en blank kontrol. Vi har dernæst txtUrl_KeyUp hændelsen, i hvilken vi tjekker for at se, om brugeren har trykket på Enter inde i adresselinjen - hvis ja, starter vi navigationen til den indtastede URL.

wbSample_Navigating hændelsen sørger for, at adresselinjen er opdateret hver gang, en ny navigation starter. Dette er vigtigt, da vi ønsker at vise den aktuelle URL uanset, om brugeren startede navigationen ved at indtaste en ny URL eller ved at klikke på web-siden.

Den sidste del af code-behind er simpel håndtering af vores kommandoer: To til frem og tilbage knapperne, vi vi kanbruge CanGoBack og CanGoForward for at afgøre, om de kan udføres, samt GoBack og GoForward metoderne til at udføre opgaven. Dette er meget standard, når vi har med WPF kommandoer at gøre, som beskrevet i sektionen om kommandoer i dette selvstudie.

Den sidste kommando tillader vi altid at lade udføre, og når den udføres, bruger vi Navigate() metoden endnu en gang.

Resume

Som du kan se, er inkludering og anvendelse af en komplet web browser inde i din applikation meget nemt med WebBrowser kontrollen. Men du skal være opmærksom på, at WPF versionen af WebBrowser er en smule begrænset sammenligned med WinForms versionen, men til grundlæggende brug og navigation virker den fint.

Hvis du ønsker at bruge WinForms versionen i stedet, kan du gør det ved at bruge WindowsFormsHost, som bliver forklaret et andet sted i dette selvstudie.


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!