Das neue Browser Control für Windows Apps heißt WebView2
und basiert auf der Google Chrome ( Chromium, in Microsoft als Canary ) Browser
API.
Das Control löst das alte WebBrowser in WinForms und
WebView in WPF und UWP ab und kommt schon als Preview in 2020 zum Einsatz und in
2021 als vollwertige Version.
Einsatz:
Mit dem WebView2 kann man in einer Windows App HTML und
Javascript basierte HTML Webseiten lokal oder via Web URL anzeigen und sozusagen
in eine App einbinden.
Dadurch kann man Web-Anwendung automatisch testen und auch
Webseiten automatisiert auswerten und Daten sammeln wie Webscraping.
Betrifft:
UWP
WinUI3 WPF WinForms
Vorraussetzung:
Für die Verwendung unter Windows 10 Visual Studion SDK
2019 muss über Microsoft Edge Insider die neue Chromium basierte Browser
Schnittstelle installiert werden.
Installation
Download:
Microsoft
Edge Insider Channels
https://www.microsoftedgeinsider.com/en-us/download
Beta Channel
Major
update every 6 weeks
The
Beta channel is the most stable Microsoft Edge preview experience. With major
updates every 6 weeks, each release incorporates learnings and improvements
from our Dev and Canary builds.
Beispiel Anwendung in Universal Windows App (gleich wie
WPF mit WinUI3)
Beispiel Code / UWP Universal Windows
MainPage.xaml
<Page
x:Class="Uwp_webControl.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Uwp_webControl"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox Name="addressBar" Grid.Column="0"/>
<Button x:Name="myButton" Grid.Column="1" Click="myButton_Click">Go</Button>
<WebView2 x:Name="MyWebView" Grid.Row="1" Grid.ColumnSpan="2"
Source="https://Google.com" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Grid>
</Page>
|
MainPage.xaml.cs
Code Behind in C#
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using
System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.Web.WebView2.Core;
namespace Uwp_webControl
{
/// <summary>
/// An empty page that can be used
on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
#region ====< Buttons >=====
private void myButton_Click(object sender, RoutedEventArgs e)
{
try
{
Uri targetUri = new Uri(addressBar.Text);
MyWebView.Source = targetUri;
}
catch (FormatException ex)
{
// Incorrect address entered.
}
}
#endregion ====</ Buttons >=====
}
}
|