2011-05-25 24 views
5

Windows 7 Phone uygulamasında şeffaf bir WebBrowser denetimi yapmaya çalışıyorum, bu yüzden uygulamanın geri kalanıyla aynı temayı sunabilir, ancak denediğim herhangi bir şeyle hiçbir ilgim olmadı. HTML metnini hala görmem gerekiyor, ancak arka planın saydam olmasına gerek yok. CSS'yi denetimde kullanmak işe yaramıyor ve XAML aracılığıyla da çalışamıyorum. Mümkün mü? Bu post, cesaret verici değildi.WebBrowser'ı Oluşturma Şeffaf

cevap

4

Bu mümkün değil. Tarayıcı motoru her zaman HTML sayfası için bir arka plan rengi oluşturur. BODY etiketine bir renk atayabilirsiniz, ancak 'saydam' değeri her zaman beyaz olur. WebBrowser XAML öğesine atadığınız Arkaplan rengi, tarayıcı motoru esasen bunun üst kısmı üzerinde işlediği için hiçbir etkisi yoktur.

Uygulama temanızla eşleştirmek için en iyi seçeneğiniz, uygulama teması arka plan rengini InvokeScript aracılığıyla BODY öğesinde ayarlayacağınız bir Javascript işlevine HTML sayfasına iletmektir. Bu, yüklediğiniz HTML içeriğini kontrol ettiğinizi varsayar. (Ayrıca, komut dosyasını IsScriptEnabled aracılığıyla etkinleştirmeyi de unutmayın.)

+1

bu won' görünümünü ve olacak İnsanların bunu denediğinde çoğu zaman olduğu gibi, görüntü arka planında ona yardımcı olur. –

+0

Sanırım ne yapacağıma son vermek, tüm sayfayı bir Web Tarayıcısı denetimi olarak oluşturmak ve arka planın temam olmasını sağlamaktır. (Oluşturduğum Web Sitesi üzerinde tam kontrol sahibi oldum, bu yüzden temayı eşleştirmek için biraz CSS ekleyeceğim). – Woody

3

Webbrowser denetiminin sayfa arka planına uyacak bir renk gösterecek şekilde ayarlanması için bazı ilk içeriğin yüklenmeye çalışılmasına (veya ek olarak) ek olarak Kontrolün opaklığını 0 olarak ayarlayabilir ve ardından kontrol üzerindeki Navigated olayının ilk kez tetiklenmesi durumunda 1 olarak değiştirebilirsiniz.

0

Kod-çözüm:

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; 
} 
0

Eğer webbrowser bileşeninde görüntülenen html içeriği stil, böylece bileşen uygulamanıza Tabii

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