使WebBrowser透明

| 我试图使Windows 7 Phone应用程序上的WebBrowser控件透明,因此它可以与应用程序的其余部分具有相同的主题,但是我尝试过的任何方法都没有成功。 我仍然需要能够看到HTML文本,但是背景必须是透明的。在控件中使用CSS似乎无效,而且我也无法通过XAML使其正常工作。这可能吗?这个职位,并不令人鼓舞。     
已邀请:
这是不可能的。浏览器引擎始终为HTML页面呈现背景色。您可以为BODY标签分配颜色,但是\'transparent \'值始终以白色结尾。您分配给WebBrowser XAML元素的Background颜色实际上没有任何作用,因为浏览器引擎实际上是在其顶部进行渲染。 最好的匹配您的应用程序主题的方法是通过InvokeScript将应用程序主题背景色传递到HTML页面中的Javascript函数中,然后将其设置在BODY元素上。这假定您可以控制要加载的HTML内容。 (此外,不要忘记通过IsScriptEnabled启用脚本。)     
作为尝试加载一些初始内容(将Webbrowser控件设置为显示与页面背景匹配的颜色)的替代方法(或可能除此之外),您可以将控件的不透明度设置为0,然后将其更改为1第一次触发控件上的“ 0”事件时。     
代码解决方案:
private void SetHtml(WebBrowser browser, string body)
{
    string style = \"<style>\";
    string background = GetColorForCss(\"PhoneBackgroundColor\");
    string foreground = GetColorForCss(\"PhoneForegroundColor\");
    style += \"body{background-color: \" + background + \"; color: \" + foreground + \";}\";            
    style += \"</style>\";
    string html = \"<!DOCTYPE html><html><head>\" + style + \"</head><body>\" + body + \"</body></html>\";

    Color phoneBackground = (Color)Application.Current.Resources[\"PhoneBackgroundColor\"];
    browser.Background = new SolidColorBrush(phoneBackground);
    browser.Opacity = 0;
    browser.NavigateToString(html);
    browser.LoadCompleted += browser_LoadCompleted;


}

void browser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    _browser.OpacityMask = null;
    _browser.Opacity = 1;
}
    
您可以设置webbrowser组件中显示的html内容的样式,以便该组件具有您应用的外观
            web_browser.NavigateToString(html: \"<html style=\'background-color:\" + BACKGROUND_THEME_COLOR + \";color:\" + FOREGROUND_THEME_COLOR + \";font-size:15pt;\'>\" + your_html_content + \"</html>\");
    

要回复问题请先登录注册