ndfweb.cn

.Net桌面端开发使用WebView2


2022-11-16 15:46:21 (5661)


前言

已更新后续:WebView2 使用及现状


最近研究.net Core的时候,发现微软终于放弃IE内核,拥抱Chrome了,这也算是微软对开源的决心越来越大吧。作为桌面端程序开发人员,不管是使用Winform还是WPF,如果想在界面上加载HTMl代码,使用自带的WebBrowser会发现是灾难性的事件,WebBrowser万年不变的IE7内核让不管多绚丽多彩的HTMl暗然失色,于是开始寻找替代方案,而CefSharp就是不二之选,CefSharp使用的是CEF开源框架,CEF 是一个基于google chromiun的简单的框架。


CefSharp: https://github.com/cefsharp/CefSharp/.


CefSharp提供Winform、WPF、OffScreen的NuGet获取下载,使用也很简单,只需要简单的配置一下即可享受Chrome浏览器的体验,之前写过一个 CefSharp 使用心得.


一、WebView2是什么?

Microsoft Edge WebView2 控件使你能够在本机应用程序中嵌入 web 技术 (HTML、CSS 和 JavaScript \ ) 。 WebView2 控件使用 Microsoft Edge () Chromium 作为呈现引擎在本机应用程序中显示 web 内容。 使用 WebView2,你可以将 web 代码嵌入本机应用程序的不同部分,或在单个 Web 视图中构建整个本机应用程序。

这是Micosoft官方文档的说明,其实就是跟之前的WebBrowser一样,也是基于本地的浏览器内核引擎来渲染网页的,只不过这次使用的是Edge的Chromium内核。所以要使用WebView2就必然需要本地安装了Microsoft Edge Chromium版本链接: https://www.microsoftedgeinsider.com/zh-cn/.。


二、使用步骤

1.必备条件

请确保在继续之前安装了以下先决条件列表:


Microsoft Edge (Chromium 在 windows 10、windows 8.1 或 windows 7 上安装了) 的未放大频道。

Visual Studio 2017 或更高版本。


2.引入库

直接Nuget:(请注意必须使用预发行版本,稳定版本还不能使用)


直接在XAML里引入库


xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"


<wv2:WebView2 x:Name="webView" Grid.Row="1"  Source="https://www.baidu.com" />

1

2

3

此时会发现,程序并未F5运行,但设计窗口直接加载了百度的页面,说明直接使用Edge渲染了网页。这个对开发人员来说真是舒服呀。


经过测试发现:WebView2支持H264的视频解码,要知道CefSharp可是需要自己手工重编译CEF才行的呀。


在后台可通过调用 CoreWebView2Environment.GetAvailableBrowserVersionString() 来获取当前的浏览器内核版本


string coreWebView2Environment = CoreWebView2Environment.GetAvailableBrowserVersionString();

1

页面的跳转通过Navigate:


private void btnGo_Click(object sender, RoutedEventArgs e)

        {

            if (webView != null && webView.CoreWebView2 != null)

            {

                webView.CoreWebView2.Navigate(tbUrl.Text);

            }

        }

1

2

3

4

5

6

7

 这里需要说明的是:必须对CoreWebView2进行初始化,看一下微软官方的解释是因为创建 CoreWebView2 是一个昂贵的操作,它涉及启动 Edge 浏览器进程之类的操作。


 有两种方法可导致创建 CoreWebView2:

 1)调用 EnsureCoreWebView2Async 方法。 这称为显式初始化。 

 2)设置 Source 属性(例如,可以通过标记执行此操作)。 这称为隐式初始化。

1

2

3

4

5

总结

WebView2未来应该是要替代WebBrowser的,虽然需要依赖本机自带的Edge chromium内核,但相信未来的windows 更新肯定会以Edge chromium内核代替IE内核,并且不需要重新下载Chrome浏览器,使用Edge也会有一样的浏览体验。而作为桌面开发人员来说,使用WebView2直接加载网页会比使用CefSharp来得更舒服,不再需要引入一堆的CEF类库,同时安装文件也会缩小很多。



了解更多请访问:http://www.ndfweb.cn/news-923.html
  NDF俱乐部
  国际域名注册
  建站咨询
合作伙伴:万网 | 新网 | 新网互联 NDF网站建设淘宝店 | 实用工具 | 外貿網站建設 | 联系我们
鲁公网安备 37110202000336号 鲁ICP备2021027697号-1 Sitemap - RSSRSS订阅