2012-06-11 10 views
6

: Kullanıcı NewPage geri tıkladığında Geçerli sayfayı arka yığına yerleştirmeden yeni bir sayfaya gidin. Bir CurrentPage, özel bir olay üzerine, kullanarak yeni sayfaya gidin gelmez navigationservice var bir Windows Phone 7 uygulamasında

NavigationService.Navigate(new Uri("/NewPage.xaml", UriKind.Relative)); 

Şimdi Uygulamanın istiyorum CurrentPage'i atlayın ve doğrudan uygulamanın Ana Sayfasına gidin.

NavigationService.RemoveBackEntry'yi kullanmayı denedim, ancak bu, CurrentPage yerine MainPage'i kaldırır.

Akımı arka yığına yerleştirmeden yeni bir sayfaya nasıl gidebilirim?

cevap

11

NewPage.xaml dizinine bir parametre boyunca geçiş yaparken, önceki sayfanın arka planından ne zaman çıkarılacağını bilebilirsiniz.

Aşağıdaki gibi yapabilirsiniz:

CurrentPage.xamlgezinmeye geçişli parametresi boyunca NewPage.xaml için NewPage arasında OnNavigatedTo durumunda

 

    bool remove = true; 
    String removeParam = remove ? bool.TrueString : bool.FalseString; 

    NavigationService.Navigate(new Uri("/NewPage.xaml?removePrevious="+removeParam , UriKind.Relative)); 

.xaml, önceki sayfanın kaldırılıp kaldırılmayacağını kontrol edin. Eğer backstack kaldırmak istiyorsanız

 

    bool remove = false; 

    if (NavigationContext.QueryString.ContainsKey("removePrevious")) 
    { 
     remove = ((string)NavigationContext.QueryString["removePrevious"]).Equals(bool.TrueString); 
     NavigationContext.QueryString.Remove("removePrevious"); 
    } 

    if(remove) 
    { 
     NavigationService.RemoveBackEntry(); 
    } 

Bu şekilde, CurrentPage.xaml karar verebilir.

+0

Şimdi bunu Windows Mağazası uygulamalarında nasıl yapıyoruz? 'RemoveBackEntry() 'gibi görünmüyor mu? – GONeale

+0

Henüz bakmadım, tek bildiğim, bunun WP7 üzerinde çalışması. Bir cevapla karşılaşırsam, buraya gönderirim. – akalucas

0

Çağıran RemoveBackEntry ürününüze erken geliyor (Hala CurrentPage.xaml üzerindeyken). Bu yüzden MainPage.xaml kaldırılıyor. OnNavigatedTo olayında, NewPage.xaml öğesine gittiğinizde, NavigationService.RemoveBackEntry öğesini arayın ve bu sorunu çözmelisiniz.

+0

Yeni Sayfa, arka yığınının kaldırılması gerektiğini bilmediğinden, bunu CurrentPage'de çağırmalıyım. – Sam

+0

@Sam Akalucas'ın cevabını kontrol edin. OnNavigatedTo etkinliğinde bunu aklımda bulundum. Ayrıca, CurrentPage.xaml adresinden gelip gelmeyeceğinizi de söyleyemezsiniz. – loyalpenguin

1

"NavigationService.RemoveBackEntry()" adlı yeri nerede buldunuz? Sanırım bunu yeni sayfada yapmak zorundasınız, atlamak istediğiniz sayfada değil!

düzenleme: Daha iyi bir resim elde etmek için: ana sayfanız var -> 1 .st. Alt Sayfa (arkadaki gezinme sırasında atlanmalı) -> 1. alt sayfadan geçen 2. alt sayfa.

2 fikirler: 1) NavigationMode (olay görürseniz 1rst alt sayfasının OnNavigatedTo Etkinlik Giriş) 1rst alt sayfa 2 OnNavigatedFrom-Etkinliğinde "NavigationService.RemoveBackEntry()" çağrısını yapmayı deneyin args) == Geri ve tekrar bir kez daha gidin.

+0

NewPage, arka yığını kaldırması gerektiğini bilmediğinden, onu CurrentPage'de çağırmalıyım. – Sam

+0

cevabımı düzenledim –

İlgili konular