它不起作用的原因是因为您混合使用了 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";
}
我已经测试过了,它可以工作。