Silverlight 4 - WebBrowser komponenta

[Sledujte také náš twitter @Aglightcz, kde naleznete krátké zprávy nejen o novinkách na našem webu]

WebBrowser je nová komponenta, která umožňuje renderovat HTML uvnitř silverlightí aplikace. Dokáže se vypořádat i s vnořenou aplikací v Silverlightu, ve Flashi a jiné.

Nachází se ve jmenném prostoru System.Windows.Controls.

Zpřístupnit obsah webové stránky můžeme třemi různými způsoby:

  1. Metoda NavigateToString(String), která jako parametr přijímá kód webové stránky(HTML + JavaScript)
  2. Metoda Navigate(URI), která jako parametr přijímá URI
  3. Vlastnost Source, které jako hodnotu přiřadíme URI

Druhý a třetí způsob je ekvivalentní.

Další zajímavou metodou je metoda InvokeScript(String), která umožňuje zavolat skript, jehož jméno je předáno v parametru.  

Omezení

Pouze aplikace v režimu mimo prohlížeč(Out of the Browser - OOB) je schopná renderovat obsah webové stránky. Pokud se pokusíme zpřístupnit obsah webové stránky v rámci prohlížeče, tak se nám objeví prázdný čtverec stejné velikosti jako je vložená WebBrowser komponenta. Je tedy vhodné kontrolovat, zda-li aplikace je spuštěna mimo prohlížeč. Například s použitím podmínky:

if (App.Current.IsRunningOutOfBrowser)

Ukázka

Vytvořme si aplikaci, která bude obsahovat WebBrowser komponentu pro zobrazení obsahu webové stránky, textové pole pro zadání webové adresy a v poslední řadě tlačítko, které vyvolá přechod na webovou stránku.

Aplikace by mohla vypadat podobně jako na obrázku:

WebBrowser

 WebBrowser2

XAML kód může vypadat následovně:

  <Grid x:Name="LayoutRoot" Background="#FFA7A7A7">
        <WebBrowser Height="440" Name="webBrowser1" VerticalAlignment="Top" Margin="12,53,0,0" 
                    HorizontalAlignment="Left" Width="552" />
        <TextBox Height="23" Width="338" Margin="12,15,412,0" Name="textBox1" 
                VerticalAlignment="Top"HorizontalAlignment="Left" />
        <Button Content="--&gt;" Height="23" HorizontalAlignment="Left" Margin="489,15,0,0" 
              Name="button1"VerticalAlignment="Top" Width="75" Click="button1_Click" />
    </Grid>

Nyní přidáme událost kliknutí na tlačítko (v designéru dvakrát poklepat na tlačítko)

Do této metody přidáme následující kód:

if (App.Current.IsRunningOutOfBrowser)
            {
                webBrowser1.Source = new Uri(textBox1.Text, UriKind.Absolute);
            }
            else
            {
            MessageBox.Show("Pro prohlížení webové stránky je nutné mít aplikaci v režimu OOB.");
            }

Po kliknutí na tlačítko otestujeme zda-li je aplikace v režimu OOB. V případě, že aplikace běží mimo webový prohlížeč, pak po kliknutí se ve WebBrowseru vyrenderuje obsah zadané stránky. Do vlastnosti Source je předán nový objekt typu Uri, kterému je předán text z textového pole jako adresa webové stránky. Místo vlastnosti Source jsme mohli použít metodu Navigate(Uri). Oba způsoby jsou totožné.

Nyní nahraďme vlastnost Source metodou NavigateToString():

webBrowser1.NavigateToString(textBox1.Text);

Do textového pole napišme nějaký fragment HTML kódu, WebBrowser by nám tento kód měl správně vyrenderovat. Například:

WebBrowserRendering

 

Shrnutí

  • WebBrowser pracuje pouze v režimu OOB
  • Nutné nastavit rozměry WebBrowser komponenty, defaultně jsou 0
  • Metoda Navigate(Uri) a vlastnost Source zobrazí obsah zadané webové stránky
  • Metoda NavigateToString(String) příjímá kód HTML a Javascript, který následně zobrazí
  • Metoda InvokeScript(String) vyvolá zadaný skript
Ohodnoťte článek: starstarstarstarstar

Komentáře

Přidat komentář

jméno

text komentáře

opište text z obrázku


O autorovi

David Beinhauer

David Beinhauer

Působí jako Microsoft Student Partner a pracuje jako vývojář v jedné nadnárodní firmě. Zajímá se o webové technologie a počítačovou grafiku. Pozornost také věnuje hernímu průmyslu

web: www.aglight.cz

©2010 | David Beinhauer | Lukáš Kubis