您可以在附加属性的代码做到这一点:
static void OnHtmlChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
WebBrowser webBrowser = dependencyObject as WebBrowser;
webBrowser.LoadCompleted += WebBrowserOnLoadCompleted;
if (webBrowser != null)
webBrowser.NavigateToString(e.NewValue as string ?? " ");
}
private static void WebBrowserOnLoadCompleted(object sender, NavigationEventArgs navigationEventArgs)
{
var webBrowser = sender as WebBrowser;
if (webBrowser != null)
{
var document = webBrowser.Document as mshtml.HTMLDocument;
if (document != null)
{
var head = document.getElementsByTagName("head").OfType<mshtml.HTMLHeadElement>().FirstOrDefault();
if (head != null)
{
var styleSheet = (mshtml.IHTMLStyleSheet)document.createStyleSheet("", 0);
styleSheet.cssText = "* { background-color: purple; " +
" font-family: Arial, Helvetica, sans-serif; " +
" /* set whatever CSS rule you want */ }";
}
}
webBrowser.LoadCompleted -= WebBrowserOnLoadCompleted;
}
}
你必须包括这工作Microsoft.mshtml
参考。
这会在导航到string
之前附加LoadCompleted
事件处理程序。在处理程序中获取head
元素,创建一个新的style
标记并添加所需的CSS规则。