2010-12-08 36 views
5

我想在我的WPF應用程序中使用WebKit瀏覽器控件。但是,我無法在設計時添加它。即使我將WebKit添加到工具箱中,它也處於禁用狀態。如何在WPF中使用WebKit瀏覽器控件

我的問題是如何在WPF窗體的設計時使用該控件?

感謝, OMKAR

+1

[一個真正的WPF 4.0 WebBrowser](http://chriscavanagh.wordpress.com/2010/10/04/a-real-net-4-0-webbrowser/) – rooks 2010-12-09 12:15:35

回答

2

正如在http://msdn.microsoft.com/en-us/library/ms742735(v=vs.110).aspx中所解釋的,您應該先在您的XAML文件中創建一個WPF網格。

<Grid x:Name="grdBrowserHost"> 
</Grid> 

並通過將此代碼插入到C#源代碼中,在WPF表單中添加.NET WebKit。

System.Windows.Forms.Integration.WindowsFormsHost host =new System.Windows.Forms.Integration.WindowsFormsHost(); 

// Create the ActiveX control. 
WebKit.WebKitBrowser browser = new WebKit.WebKitBrowser(); 
browser.Navigate("http://www.google.com"); 

// Assign the ActiveX control as the host control's child. 
host.Child = browser; 

// Add the interop host control to the Grid 
// control's collection of child controls. 
grdBrowserHost.Children.Add(host); 

不要忘了包括這些引用

System.Windows.Forms 

WindowsFormsIntegration 
在您的項目

希望得到這個幫助。

+0

這有不幸的結果運行WebKit內一個單獨的hWnd通過'WindowsFormsHost`,然後在WPF上下文中重新映射 - 這增加了許多間接性層,這會損害性能,並且在高DPI條件下可能不可用。 – Dai 2017-10-08 08:38:18

0

目前在WPF應用程序 (截至2017年10月)中託管Webkit(或Blink)的最佳方法之一似乎是the Awesomium project,它爲各種平臺(包括WinForms和WPF)提供了一流的包裝庫。

我建議不要在WPF應用程序的System.Windows.Forms.Integration.WindowsFormsHost中使用任何Web瀏覽器控件,因爲至少在High-DPI上下文中添加了間接和不可預測的行爲層 - 我確信還有其他原因。

請注意,Awseomium不是真正的開源或自由軟件。 If your company makes more than $100k USD in profit per year then for commercial applications there is a $2900 USD per-title license fee

了這番解釋的出路,getting started with Awesomium in WPF is straightforward

  1. Download the Awesomium SDK。 (截至2017年10月,Awesomium下載頁面無法升級,but the SDK is still available to download from the Internet Archive和其他地方在線)。
  2. SDK安裝程序會爲您在GAC中註冊Awesomium程序集,以便它們出現在WPF(和WinForms)工具箱的「添加/刪除項目」窗口中。
  3. 在Visual Studio中打開您的WPF項目並打開一個XAML設計文檔。
  4. 打開Visual Studio工具箱並打開添加/刪除項目窗口,並從您的GAC中加載的Awesomium.Windows.Controls.dll程序集添加Awesomeium WPF控件。您可能只需要WebControl控制(Awesomium.Windows.Controls.WebControl)。
  5. 將控件從「工具箱」拖放到設計圖面上 - Visual Studio將自動更新您的項目,以將引用添加到Awesomeium程序集中。

請注意Chromium上還有其他的包裝庫 - 我並不是特意贊同Awesomium,但是當我在最近的一個項目中使用它時,我有一段美好的時光。

另一個受歡迎的庫是CefSharp,它是BSD許可的,與Awesomium相比,它更可口,但是(據我所知)並不分發一個SDK安裝程序來處理Visual Studio Toolbox集成 - 但它看起來很像就像你只需要手動添加一個對CefSharp.Wpf.dll程序集的引用,並將這些元素添加到你的WPF項目中(使用XAML編輯器,而不是工具箱 - 無論如何你應該這樣做)。

相關問題