您可以在附加屬性的代碼做到這一點:
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規則。