Silverlight 4 tõi võimaluse näidata rikast HTML sisu otse Silverlight rakenduse sees. Muidugi on siin väike piirang, WebBrowser kasutajaliideseelementi saab kasutada vaid töölauale paigaldatud ehk OOB rakendustes. Sisu kuvamiseks on kaks viisi – esiteks võib seada WebBrowser elemendil Source atribuudi väärtuseks veebiaadressi. Teise võimalusena saab laadida veebilehe sisu stringina kasutades meetodit NavigateToString.
WebBrowser ja andmemall
Iseenesest on WebBrowser mõlemad sisukuvamise variandid kenad, kuid jooksvalt muutuva HTML korral ei ole lihtsat viisi see HTML XAMLis külge panna, eriti kui WebBrowser komponent asub DataTemplate’i (andmemalli) sees, mille komponentidele lihtsasti nime kaudu ligi ei saa. Seega on ainus võimalus WebBrowser komponenti laiendada. Üheks võimaluseks on lisada WebBrowserile (XAML) atribuut, mis kutsub iga muutumise korral välja enda meetodi NavigateToString. Sellise atribuutide lisamise skeemi nimetus on attached properties ehk vabameelselt tõlkides näiteks külgepoogitavad atribuudid. Sellised atribuudid on näiteks Canvas.Left ja Grid.Row, need on atribuudid, mis on võimalik lisada ükskõik millisele Silverlight kasutajaliidese komponendile (UIElement tüüpi).
WebBrowser komponendi sidumine
Selleks, et saaksime WebBrowseri HTML-i muuta ilma, nii et ei peaks käsitsi välja kutsuma selle konkreetse WebBrowseri meetodit NavigateToString loome uue külgepoogitava atribuudi html. Igal korral kui selle atribuudi väärtus muutub kutsutakse välja meetod OnHtmlChanged ja seal sees kutsutakse selle konkreetse WebBrowser komponendi meetod NavigateToString, mille külge atribuut poogitud on.
Ja nüüd on lihtne XAML koodis WebBrowseris kuvatavat HTMLi muuta:
Külgepoogitavatest atribuutidest (attached properties) võib lähemalt lugeda MSDNist