2011-01-24 12 views
8

Architektura wygląda następująco:
Po kliknięciu przycisku otwiera się strona HTML zawierająca link. Po kliknięciu linków chcę otworzyć go w zewnętrznej (domyślnej) przeglądarce WP7, tak aby aplikacja się zamknęła i link otwiera się zewnętrznie. Jak mogę to wdrożyć?
Dodany ta kontrola w pliku XAML:chce otworzyć Link w zewnętrznej przeglądarce WP7

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

Na kliknięcia przycisku:

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

Teraz index_en.html zawiera link, który ma zostać otwarty w zewnętrznej przeglądarce.

Odpowiedz

7

Możesz użyć WebBrowserTask, aby uruchomić przeglądarkę.

znalazłem, że trzeba uciekać URL przekazać do niej choć :(

+0

Jak mogę to wdrożyć, pomijając? – Shaireen

+0

@Shaireen: Zaimplementuj * co *, pomijając? Pomijanie czego? –

+0

Przepraszam, że się nie wyjaśniłem. Podczas korzystania z przeglądarki internetowej muszę podać mu adres URL. Czy ten adres URL powinien być nazwą pliku html? czy to jest połączenie, które się otwiera? – Shaireen

12

Normalnie byłoby to zrobić za pomocą Target nieruchomości na <a> tagu. Ale w WP7 (przynajmniej w emulatorze) to nie działa

Co można zrobić, to przechwycić za pomocą Navigating zdarzeń coś jak następuje:.

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

Właściwość "IsSupposedToOpenInPhoneBrowser (e.Uri)" nie została znaleziona. Co to oznacza? – Shaireen

+0

To tylko fałszywy symbol zastępczy metody, jeśli chcesz zweryfikować/przefiltrować Uris przed otwarciem ich w przeglądarce telefonu ... możesz to zrobić bez niego. – decyclone

6

można użyć coś takiego

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