2011-02-24 15 views
6

PhoneApplicationPage uygulamasına yerleştirilmiş bir web tarayıcısı denetimim var. Donanım geri düğmesine basmalı ve web tarayıcısını geri gitmeye zorlamalıyım. Donanım geri düğmesi nasıl işlenir?Donanım geri düğmesini kullanma ve Windows Phone üzerinde çalışan WebBrowser denetimine gönderme

I know.

Web tarayıcısını önceki sayfaya gitmek için nasıl zorlarsınız? WinForms web tarayıcısındaki GoBack() ve CanGoBack özelliklerinin basit görünmesi, Windows Phone'ta eksik görünüyor. Shaw Wildermuth blogunda bu kodu (ve daha biraz) bulabilirsiniz

private void backButton_Click(object sender, EventArgs e) 
{ 
    try 
    { 
    browser.InvokeScript("eval", "history.go(-1)"); 
    } 
    catch 
    { 
    // Eat error 
    } 
}

: Eğer IsScriptEnabled="true" ayarlayarak WebBrowser kumanda üzerindeki senaryoyu etkinleştirirseniz

cevap

4

sonra tarayıcı içinde geriye gezinmek için aşağıdaki kullanabilirsiniz Navigating with the WebBrowser Control on WP7'u gönderin.

+1

Kirli ama güzel görünümlü kesmek%) – abatishchev

+1

Hala geri dönüp gidebileceğimi tahmin edemiyorum. (Tarihime göre arka tuşumu devre dışı bırakıyorum) Eski silverlight4, maalesef eksik olan CanGoBack özelliğine sahip. – Mugunth

9

Sadece C# ziyade JavaScript bu işlemek için karar Overflow7

içinde bu aynı soruyu ele ettik.

private Stack<Uri> NavigationStack = new Stack<Uri>(); 
sonra

Ben web tarayıcısının Navigasyonlu olayı ele geçirdik: Ben denemek geri tuşuna basın geçersiz kılma sonra

void TheWebBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) 
    { 
     NavigationStack.Push(e.Uri); 
    } 

Temelde, benim sayfa ben Uri en yığınını ekledik eğer yapabilirsem geri düğmesini kullanarak gezinmek için: - ne de "ajax" sitelerle - bu çözüm kaldırıldı olarak işaretleme mükemmel çalışmadığını

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) 
    { 
     if (NavigationStack.Count > 1) 
     { 
      // get rid of the topmost item... 
      NavigationStack.Pop(); 
      // now navigate to the next topmost item 
      // note that this is another Pop - as when the navigate occurs a Push() will happen 
      TheWebBrowser.Navigate(NavigationStack.Pop()); 
      e.Cancel = true; 
      return; 
     } 

     base.OnBackKeyPress(e); 
    } 

Not ama genel olarak oldukça iyi iş gibi görünüyor.

+0

Stuart, bence bu harika bir fikir, bir Uri Stack kullanmadan önce ve bir webbrowser görevi –

+0

kullanmaya geldiğinde kullanıcı deneyimini geliştirmenin harika bir yoluna değdi. Bu - "Gezinme" etkinliği, yalnızca kullanıcı tamamen yeni bir sayfada sona erdiğinde (ve dahili #inthispage yer imleri için tetiklenmediğinde) tetiklenir. Ancak, tüm kayıp değil - bu durumda "Gezinme" olayı hala yanıyor. –