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