2012-05-21 178 views
1

我在我的xaml代碼中擁有webbrowser控件,並且我想要更改它的文檔背景顏色。在WPF中更改Webbrowser背景顏色

<WebBrowser Source="http://google.com" x:Name="IE" Navigated="IE_Navigated" /> 



private void IE_Navigated(object sender, NavigationEventArgs e) 
{ 
    HtmlDocument document = (HtmlDocument)IE.Document; 
    var color = System.Drawing.Color.Black; 
    document.BackColor = color; 
} 

它不工作;

回答

3

它不工作的原因是因爲您有一個WPF WebBrowser和WinForms WebBrowser的混合,它們不兼容。

你的XAML是創建一個WPF web瀏覽器,但在導航的情況下,你是鑄造IE.Document爲的HTMLDocument,這是對的WinForms web瀏覽器的類型。因此演員陣容將失敗。

即使你改變它的工作,有在導航的事件再一次的問題下載已經開始被激發,它已經完成後不(在MSDN如記錄)。 WPF WebBrowser沒有像WinForms WebBrowser那樣的DocumentCompleted事件。

如果您想在WPF應用程序中使用此功能,一種簡單的方法是使用WinForms WebBrowser而不是WPF版本。這是通過在WindowsFormsHost主辦這次如下圖所示進行:

<wfi:WindowsFormsHost Name="host" /> 

你必須包括對System.Windows.Forms的引用(你可能已經擁有)和WindowsFormsIntegration程序,然後定義命名空間:

xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" 

而在後臺代碼:

webBrowser = new System.Windows.Forms.WebBrowser(); 
    host.Child = webBrowser; 

然後瀏覽:

webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 
    webBrowser.Navigate("http://google.com"); 

然後將背景設置爲黑色,你會做這樣的身體,就像這樣:

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    HtmlDocument document = (HtmlDocument)webBrowser.Document; 
    document.Body.Style = "background-color:black"; 
} 

我測試了這一點,它的工作原理。