在wpf程序中,有時會內嵌網頁。內嵌網頁有兩種方法,一種是使用wpf自帶WebBrowser控件來調用IE內核,另一種是使用CefSharp包來調用chrom內核。
一、第一種使用自帶WebBrowser:
1、直接在界面XAML文件中添加如下代碼
1 <Grid> 2 <Grid.RowDefinitions> 3 <RowDefinition Height="auto"/> 4 <RowDefinition Height="*"/> 5 </Grid.RowDefinitions> 6 <Button Content="{DynamicResource Exit}" Style="{StaticResource ButtonStyle}" Command="{Binding ExitCommand}"></Button> 7 <WebBrowser Grid.Row="1" x:Name="MyIE" Source="https://www.baidu.com/"></WebBrowser> 8 </Grid>
效果如下:

二、第二種,使用CefSharp包調用chrom內核
1、在解決方案資源管理器-》引用-》右鍵-》管理NuGet包,下載下圖所示的兩個包

2、在引用文件中添加xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
3、在界面XAML文件中添加如下代碼:
1 <Grid> 2 <Grid.RowDefinitions> 3 <RowDefinition Height="auto"/> 4 <RowDefinition Height="*"/> 5 </Grid.RowDefinitions> 6 <Button Content="{DynamicResource Exit}" Style="{StaticResource ButtonStyle}" Command="{Binding ExitCommand}"></Button> 7 <cefSharp:ChromiumWebBrowser Grid.Row="1" Name="MyChrom" Address="https://www.baidu.com/"/> 8 </Grid>
4、解決方案資源管理器-》項目-》屬性-》生成,修改平台目標為x86或者x64(使用cefSharp,必須指定目標平台,不能為AnyCPU)

效果如下:

三、常見問題及解決方法
1、與.net版本不匹配
![]()
兩種解決方法:
(1)下載一個低版本的NuGet包
(2)解決方案資源管理器-》項目-》屬性-》應用程序,目標框架改為4.5.2

2、出現錯誤:
問題簽名:
問題事件名稱: CLR20r3
問題簽名 01: XXX.exe
問題簽名 02: 1.0.0.0
問題簽名 03: f62cc746
問題簽名 04: CefSharp.Wpf
問題簽名 05: 49.0.1.0
問題簽名 06: 574e0907
問題簽名 07: 81
問題簽名 08: 0
問題簽名 09: System.IO.FileNotFoundException
OS 版本: 6.1.7601.2.1.0.256.1
區域設置 ID: 2052
其他信息 1: 3b8f
其他信息 2: 3b8f40338d3d7600dda7280b94b47c80
其他信息 3: a55c
其他信息 4: a55ca54e15598fd09281b24e67624ba3
聯機閱讀隱私聲明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804
如果無法獲取聯機隱私聲明,請脫機閱讀我們的隱私聲明:
C:\Windows\system32\zh-CN\erofflps.txt
這個錯誤是作者將自己電腦程序拷貝到別人電腦時出現的錯誤,百度了很多,基本都是說.net版本不一致錯誤,安裝了很多.net框架版本,並沒有什么用。最后發現是由於缺少MicroSoft Visual C++ Redistributable,下載各個版本的包安裝即可。
