使WebBrowser透明化

时间:2011-05-25 14:16:22

标签: windows-phone-7

我正在尝试使我的Windows 7 Phone应用程序上的WebBrowser控件透明,因此它可以与应用程序的其余部分具有相同的主题,但我没有尝试过任何尝试。 我仍然需要能够看到HTML文本,但只需要背景透明。在控件中使用CSS似乎不起作用,我也无法通过XAML使其工作。这可能吗?这post并不令人鼓舞。

4 个答案:

答案 0 :(得分:4)

这是不可能的。浏览器引擎始终为HTML页面呈现背景颜色。您可以为BODY标签指定颜色,但“透明”值始终为白色。您分配给WebBrowser XAML元素的背景颜色实际上没有效果,因为浏览器引擎实际上是在其顶部呈现。

与您的应用主题相匹配的最佳选择是通过InvokeScript将应用主题背景颜色传递到HTML页面,然后将其设置为JOD函数,然后将其设置在BODY元素上。这假设您可以控制要加载的HTML内容。 (另外,不要忘记通过IsScriptEnabled启用脚本。)

答案 1 :(得分:3)

作为替代(或者可能除此之外)尝试加载一些初始内容以将webbrowser控件设置为显示与页面背景匹配的颜色,您可以将控件的不透明度设置为0然后更改当第一次触发控件上的Navigated事件时,它为1。

答案 2 :(得分: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;
}

答案 3 :(得分:0)

您可以设置webbrowser组件中显示的html内容的样式,以便该组件具有应用程序的外观和风格

            web_browser.NavigateToString(html: "<html style='background-color:" + BACKGROUND_THEME_COLOR + ";color:" + FOREGROUND_THEME_COLOR + ";font-size:15pt;'>" + your_html_content + "</html>");