它不起作用的原因是因为您混合了 WPF WebBrowser 和 WinForms WebBrowser 并且它们不兼容。
您的 XAML 正在创建 WPF WebBrowser,但在 Navigated 事件中,您将 IE.Document 转换为 HtmlDocument,这是 WinForms WebBrowser 的类型。因此,该演员将失败。
即使您将其更改为工作,还有一个问题是,一旦下载开始,导航事件就会被触发,而不是在下载完成之后(如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";
}
我已经对此进行了测试,并且可以正常工作。