Você já deve saber que o
SilverLight é uma tecnologia web e que atua no lado do cliente.
Na aplicação das versões anteriores do
Silverlight para mostrar HTML, ou você usava
um controle – como o RichtTextBox – para converter
o HTML para XAML, ou você renderizava o elemento HTML na sua
aplicação SilverLight.
Agora, o Silverlight 4 possui o novo controle WebBrowser, que permite exibir HTML de forma
direta, ou fornecendo uma URL.
As seguintes propriedades são as
mais importantes quando se trabalha com o controle WebBrowser:
- Source: obtém ou
define a URI que deve ser renderizada no controle WebBrowser; - Navigate: especifica o URI que deve ser
carregado no controle (atua de forma idêntica à propriedade
Source); - NavigateToString: Permite exibir uma string HTML
diretamente;
O controle WebBrowser só funciona
quando o aplicativo Silverlight é executado fora do
navegador (out-of-browser). Se tentarmos executá-lo no navegador,
vamos ver um retângulo dizendo que o HTML está desativado.
Vamos mostrar um exemplo prático
usando o controle WebBrowser no SilverLight 4. Abra o Visual Web Developer 2010
Express Edition, que é gratuito, e crie um novo projeto do tipo
SilverLight Application com o nome WebBrowseSilverLight.

Em seguida, aceite as configurações
sugeridas na janela New SilverLight Application.

Pronto, a solução será criada. Na janela Solution Explorer,
veremos a solução criada com dois projetos:
- O projeto SilverLight –
WebBrowseSilverLight - O projeto Web – WebBrowseSilverLight.Web

Precisamos habilitar o recurso out-of-browser,
e para isso clique com o botão direito sobre o projeto SilverLight
e, a seguir, em Properties. A janela de propriedades será
aberta. Clique na opção Enable running application out
of the browser.
Na janela de configuração, marque a
opção Require elevetate trust when running outside the
browser, pois assim poderemos acessar qualquer URL. Se
não fizer isso, não vai conseguir navegar para páginas fora do
seu servidor.

Agora vamos começar com algo bem
simples, declarando o controle WebBrowser no
arquivo MainPage.xaml do projeto SilverLight:

A seguir, vamos testar o método NavigateToString
definindo o código abaixo no arquivo MainPage.xaml.vb
para renderizar o código HTML diretamente:
Partial Public Class MainPage
Inherits UserControl
Public Sub New()
InitializeComponent()
webBrowser.NavigateToString("<h1> Macoratti.net </h1 <p> <strong>Quase tudo para Visual Basic </strong> </p>")
End Sub
End Class
Teremos o seguinte resultado ao executar o projeto:

Para navegar para uma URL,
podemos usar o método Navigate:
Ex: webBrowser.Navigate(new
Uri(“http://www.macoratti.net”))
Vejamos outro exemplo
mais completo para simular um navegador bem simples:
Crie uma nova aplicação
SilverLight usando os mesmos passos indicados acima com o nome: NavegadorSilverLight.
A seguir, defina o código
abaixo no arquivo MainPage.xaml:

<UserControl x:Class="NavegadorSilverLight.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<Grid
x:Name="gridControls">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition
Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox
x:Name="txtUri"
Margin="5"
HorizontalAlignment="Stretch" />
<Button
x:Name="btnGo"
Grid.Column="1"
Content=" Ir "
Click="OnGo"
Margin="5" />
</Grid>
<WebBrowser
LoadCompleted="browserControl_LoadCompleted"
Grid.Row="1"
Margin="5"
x:Name="browserControl" />
</Grid>
</UserControl>
Agora, vamos definir o
código code-behind no arquivo MainPage.xaml.vb:
Partial Public Class MainPage
Inherits UserControl
Public Sub New()
InitializeComponent()
End Sub
Private Sub OnGo(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
btnGo.IsEnabled = False
browserControl.Navigate(New Uri(txtUri.Text, UriKind.Absolute))
End Sub
Private Sub browserControl_LoadCompleted(ByVal sender As Object, ByVal e As System.Windows.Navigation.NavigationEventArgs) Handles browserControl.LoadCompleted
btnGo.IsEnabled = True
End Sub
End Class
Executando o projeto iremos
obter:

Pegue o projeto completo
aqui: WebBrowseSilverLight.zip e NavegadorSilverLight.zip








