ndfweb.cn

.Net桌麵端開發使用WebView2


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



前言

已更新後續: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网站建设淘宝店 | ICO图标在线生成 | 外贸网站建设 | 联系我们
©2007-2024 NDF Corporation 鲁ICP备08005967号 Sitemap - RSSRSS订阅