WPF中使用WebView2实现内嵌浏览器功能
前些天使用CefSharp来实现内嵌浏览器的功能。本身用起来还不错,我的测试工程是.NET 8+WPF。
不知道是不是依赖库的问题,经常会遇到一些有奇奇怪怪的问题,包括控件初始化失败。
后面有网友推荐微软出的WebView2,试用了一下,确实挺不错。
安装
Install-Package Microsoft.Web.WebView2
示例代码
前台代码:
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<wv2:WebView2 x:Name="webView" Source="https://www.microsoft.com"/>
</Grid>
</Window>
后台代码:
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.Wpf;
using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
InitializeAsync();
}
private async void InitializeAsync()
{
await webView.EnsureCoreWebView2Async(null);
}
}
}
相当于开始的时候,必须先调用 EnsureCoreWebView2Async
方法来异步初始化 WebView2 控件的核心部分。
加载HTML文本
webView.NavigateToString(htmlText);
设置缩放比例
webView.ZoomFactor = 1.0;
1.0是100%,按自己的需要设置缩放的比例。