2011-01-24 17 views
8

La arquitectura es como la siguiente:
Al hacer clic en un botón, se abre una página HTML que contiene un enlace. Al hacer clic en los enlaces, quiero abrirlo en el navegador externo (predeterminado) de WP7, de forma que la aplicación se cierre y el enlace se abra externamente. ¿Cómo puedo implementar esto?
añadido este control en el archivo XAML:quiere abrir el enlace en el navegador externo de WP7

<phone:WebBrowser Name="browser" Margin="0,78,0,0" /> 

El botón de clic:

private void Information_Loaded(Object sender,RoutedEventArgs e) 
    { 
     Assembly assembly = Assembly.GetExecutingAssembly(); 

     using (Stream stream = assembly.GetManifestResourceStream("index_en.html")) 
     { 
      using (StreamReader reader = new StreamReader(stream)) 
      { 
       string html = reader.ReadToEnd(); 

       browser.NavigateToString(html);     
      } 
     } 

Ahora index_es.html tiene un enlace que se va a abrir en el navegador externo.

Respuesta

7

Puede usar el WebBrowserTask para iniciar el navegador.

me he dado cuenta que tiene que escapar de la URL se pasa a ella, aunque :(

+0

¿Cómo puedo implementarlo omitiendo? – Shaireen

+0

@Shaireen: ¿Implementar * qué * omitiendo? ¿Saltarse qué? –

+0

disculpa por no haber sido claro. En realidad, al utilizar la tarea del navegador web, necesito pasarle una url. ¿Esta URL debería ser el nombre del archivo html? o es el enlace que se abre? – Shaireen

12

Normalmente, se hacer por medio de Target propiedad en <a> etiqueta. Pero, en WP7 (al menos en el emulador), esto no funciona

Lo que podría hacer es interceptar utilizando Navigating caso algo así como lo siguiente:.

void WebBrowser1_Navigating(object sender, NavigatingEventArgs e) 
{ 
    if (IsSupposedToOpenInPhoneBrowser(e.Uri)) 
    { 
     e.Cancel = true; 
     WebBrowserTask task = new WebBrowserTask(); 
     task.URL = e.Uri.ToString(); 
     task.Show(); 
    } 
} 
+0

No se encuentra la propiedad "IsSupposedToOpenInPhoneBrowser (e.Uri)". ¿Qué significa? – Shaireen

+0

Es solo un marcador de posición de método falso si desea verificar/filtrar Uris antes de abrirlo en el buscador del teléfono ... puede prescindir de él. – decyclone

6

puede utilizar algo así

private void Button_Click_1(object sender, RoutedEventArgs e) 
{ 
    WebBrowserTask webBrowserTask = new WebBrowserTask(); 
    webBrowserTask.Uri = new Uri("http://www.someUrl.com"); 
    webBrowserTask.Show(); 
} 
Cuestiones relacionadas