2010-12-14 18 views
13

mam ten schemat aplikacji:Usuń stronę z nawigacji Stos

[List Page] -> [Detail Page] -> [ShareOnFacebook Page] 
        ^__________________| 
  1. użytkownikowi wybrać się Item w [List Page]
  2. Użytkownik może lub nie może kliknąć przycisk Share jeśli on lub ona robi , aplikacja przechodzi do trybu [ShareOneFacebook page], który wyświetla formularz logowania na Facebooka, publikuje wiadomość i nawiguje wstecz
  3. Użytkownik nawiguje z powrotem.

Jeśli użytkownik udostępnił na Facebooku, to "odświeży" wiadomość, ponieważ aplikacja zapisze sesję, aby wrócić do strony ShareOnFacebook, a następnie powrócić do mojej strony szczegółów.

Jeśli użytkownik nie udostępnił, wraca do strony listy.

Jak mogę "anulować" stronę ShareOnFacebook w moim stosie nawigacyjnym?

+0

to działa, ale jest dość hack. Lubię model Androids, który może wywoływać koniec, a potem się poruszać, działa ładnie – xximjasonxx

Odpowiedz

27

Spróbuj tego: Zadzwoń pod numer NavigationService.RemoveBackEntry(); w metodzie OnNavigatedTo. Spowoduje to usunięcie poprzedniej strony ze stosu. Moim zdaniem sztuczka z Navigation.GoBack(); nie jest satysfakcjonująca, ponieważ pokazuje stronę do usunięcia na krótki czas.

Uwaga: Działa tylko z Windows Phone OS 7.1 (Mango) SDK

+1

Dzięki, zmieniłem zatwierdzoną odpowiedź. Moje pierwotne pytanie było przed Mango, ale sądzę, że nowi ludzie będą potrzebować tej odpowiedzi teraz. –

3

Mam podobną sytuację w mojej aplikacji, rozwiązuję ją za pomocą bardzo prostego rozwiązania.

Jeśli chcesz "pominąć" stronę w backstacku, umieść trochę logiki w funkcji NavigatedTo() tej strony.

Na przykład: możesz mieć wartość bool ustawioną na wartość true po wysłaniu na Facebook, a następnie umieścić następujący kod w funkcji NavigatedTo() strony ShareOnFacebook.

Oto pseudokod:

if (alreadyPosted) Navigation.GoBack();

Funkcja GoBack() będzie pominąć tę stronę i powrócić do poprzedniej, użytkownik nigdy nie ujrzy stronę.

0

Zamieściłem przykładowe dla tej samej kwestii here.

nieliniowego nawigacja obsługa Matt związana zasadniczo robi to samo, ale prawdopodobnie będzie lepszy niż mój prosty przykład.

1

używam metody removeBackEntry na NavigationService klasy.Używam również to jako sposób skonfigurować moje własne ekranów powitalnych

 private void BWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     // switch screen 
     NavigationService.Navigated += new NavigatedEventHandler(NavigationServiceNavigated); 
     NavigationService.Navigate(new Uri("/Pages/main.xaml", UriKind.Relative)); 

    } 

    void NavigationServiceNavigated(object sender, NavigationEventArgs e) 
    { 
     NavigationService.RemoveBackEntry(); 
    } 
3

Wystarczy popatrzeć na proste biblioteki pisałem do takich celów: http://navcoerce.codeplex.com/

var fluent = new FluentNavigation(RootFrame);       

fluent.WhenNavigatedTo<MainPage>()          
     .ThenTo<LoginPage>()            
     .ThenToAnyPage()             
     .RemoveEntriesFromBackStack(1);         

fluent.WhenNavigatedTo<MainPage>()          
     .ThenTo<LoginPage>()            
     .ThenTo<RegisterPage>()           
     .ThenTo<PaymentPage>()           
     .RemoveEntriesFromBackStackTill<MainPage>();      

fluent.WhenNavigatedTo<MainPage>()          
     .ThenTo<SecondPage>()            
     .ThenTo<RegisterPage>()           
     .ThenOptionallyTo<ForgotPasswordPage>()       
     .ThenToAnyPage()             
     .RemoveEntriesFromBackStackTill<MainPage>();      

fluent.WhenNavigatingTo<PaymentPage>()         
     .RedirectTo<LoginPage>();           

fluent.WhenNavigatingTo<PaymentPage>()         
     .If(() => false)             
     .RedirectWithReturnUri<LoginPage>("ReturnUri"); 
+0

Witam, czy projekt wciąż żyje? –

+0

Vitalii, obecnie nie rozwijam się dla WP, więc nie dokonuję żadnych zmian w bibliotece. Ale nie krępuj się, aby rozwikłać projekt, zaakceptuję wszelkie zmiany, które mogą pomóc Tobie i innym użytkownikom. – Grigory

+0

Może nieco później - na razie szukam sprawdzonego rozwiązania do nawigacji. Mam główny wyciek pivota, a podczas nawigacji mam 2 widoki. Jakoś, używanie płynnego nie pomogło w moim przypadku. –