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%,按自己的需要设置缩放的比例。

posted @ 2024-11-08 15:15  wzwyc  阅读(55)  评论(0编辑  收藏  举报