我的xaml代码中有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;
}
它不起作用;
答案 0 :(得分:3)
它不起作用的原因是因为你混合了WPF WebBrowser和WinForms WebBrowser并且它们不兼容。
您的XAML正在创建WPF WebBrowser,但在Navigated事件中,您将IE.Document转换为HtmlDocument,这是WinForms WebBrowser的类型。因此,演员表会失败。
即使您将其更改为有效,还有一个问题是Navigated事件在下载开始后触发,而不是在完成后触发(如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";
}
我测试了这个并且它有效。