2012-05-21 121 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"; 
} 

我测试了这一点,它的工作原理。