WebView簡介
在win10之前,瀏覽器控件有WPF版本webBrowser、Winform版本WebBrowser,瀏覽器內核為IE。
win10之后,微軟不再維護原有的WebBrowser,轉而推出UWP版本的WebView,可以適配於WPF、Winform程序。
WebView使用
限制條件:
- win10 - WebView的內核是Edge,所以只能在win10電腦上使用。在win7環境下,無法顯示。
- .NET 版本 4.6.2及以上 - 在引用WebView控件時,要求當前項目的.net框架至少是4.6.2
在WPF中引用WebView:
在NuGet下搜索Microsoft.Toolkit.Forms.UI.Controls.WebView ,點擊安裝后,直接使用WebView控件就行了。
WebView當前已知缺陷:官網列出的缺陷列表Known Issues of the WebView
還有值得關注的是WebView在高DPI下顯示比例不正常,官網文檔上有解決方案
同時,WebView如果在后台初始化無法顯示網頁(如果放Xaml中,正常),調整窗口大小后則正常顯示,目測可能因為寬高未自適應(待查找原因)。
WebView兼容
針對WebView以上提到的限制條件,只能在Win10中顯示。那么是win7/win8環境下瀏覽器呢?
值得點贊的是,官網提供了一個兼容控件WebViewCompatible,不用我們去做兼容。
- 在win10下,基於Edge呈現
- 在win10以下版本,則使用IE
所以。。。。在win7/win8環境下原有WPF的坑依舊存在,比如透明窗口樣式下無法顯示問題
當然,如果你的程序主要是在Win10上運行,然后只是兼容win7/win8,WebViewCompatible絕對適合你。
各版本瀏覽器的Demo效果
點擊下載Demo,查看在不同windows版本下的效果。
瀏覽器版本&Windows版本結果對比如下:
winform版本&WPF版本 - WebBrowser
- win10 & win7
- 默認樣式 - 顯示正常
- 透明窗口樣式 - 顯示空白(不可見,但可點擊隱藏內容)
原因:winform版本&WPF版本,已經指定內核為IE瀏覽器,而IE瀏覽器內核在透明窗口樣式下無法正常顯示。
UWP版本-WebView
- win10下
- 默認樣式 & 透明樣式 - 顯示正常
- win7下 程序崩潰
原因:UWP版本,除了要求.net4.6.2,還要求win10環境。而win10下,WebView的內核為Edge,所以顯示正常
UWP兼容版本-WebViewCompatible
- win10下
- 默認樣式 & 透明樣式- 顯示正常
- win7下
- 默認樣式 - 顯示正常
- 透明窗口樣式 - 顯示空白
原因:UWP兼容版本,要求.net4.6.2。win10下,WebViewCompatible的內核為Edge,所以顯示正常;win7下,WebViewCompatible內核為IE瀏覽器,所以與WPF版本一樣,如果窗口為透明窗口樣式則顯示空白。