Делаем WebBrowser прозрачным - PullRequest
5 голосов
/ 25 мая 2011

Я пытаюсь сделать элемент управления WebBrowser в моем приложении Windows 7 Phone прозрачным, чтобы он мог иметь ту же тему, что и остальная часть приложения, но у меня ничего не получилось. Мне все еще нужно видеть текст HTML, но фон должен быть прозрачным. Использование CSS в элементе управления, похоже, не работает, и я не могу заставить его работать через XAML. Это возможно? Этот пост не был обнадеживающим.

Ответы [ 4 ]

4 голосов
/ 25 мая 2011

Это невозможно. Движок браузера всегда отображает цвет фона для HTML-страницы. Вы можете назначить цвет тегу BODY, но значение «прозрачного» всегда будет белым. Цвет фона, который вы назначаете элементу XBL WebBrowser, действительно не имеет никакого эффекта, так как движок браузера по сути отрисовывает поверх него.

Лучше всего, чтобы соответствовать теме вашего приложения - передать цвет фона темы приложения через HTML-страницу через InvokeScript функции Javascript, которая затем установит его для элемента BODY. Это предполагает, что у вас есть контроль над содержимым HTML, который вы загружаете. (Также не забудьте включить скрипт через IsScriptEnabled.)

3 голосов
/ 26 мая 2011

В качестве альтернативы (или, может быть, в дополнение к) попытке загрузить некоторое исходное содержимое, чтобы установить, что веб-браузер отображает цвет, соответствующий фону страницы, вы можете просто установить непрозрачность элемента управления равной 0, а затем изменить 1, когда событие Navigated на элементе управления запускается впервые.

0 голосов
/ 03 сентября 2014

Вы можете стилизовать html-контент, отображаемый в компоненте webbrowser, чтобы у компонента был внешний вид вашего приложения

            web_browser.NavigateToString(html: "<html style='background-color:" + BACKGROUND_THEME_COLOR + ";color:" + FOREGROUND_THEME_COLOR + ";font-size:15pt;'>" + your_html_content + "</html>");
0 голосов
/ 26 сентября 2013

Кодовое решение:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...