Podczas nawigacji między stronami widzę, że istnieją funkcje pozwalające na powrót/do przodu lub na stronę "home". Potrzebuję jednak móc wrócić, ale pomijać strony, których użytkownik nie powinien już odwiedzać. Przeszukałem i znalazłem następujące: http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/3819f389-3bfc-4c59-a919-272927fc9229Strony pop off stos nawigacyjny w aplikacji Windows 8 App
Próbowałem używać GetNavigationStack, ale ciągle się zawiesza z powodu braku możliwości serializacji i przekazania obiektu jako parametru NavigationParameter. Aby przekazać 2 parametry, muszę użyć Tuple, ale nie można tego zrobić serializacją, więc nie mogę pobrać stosu nawigacyjnego, aby go edytować i ręcznie usunąć strony.
Potem uznał ten WinRT - How to ignore or delete page from navigation history i że mogłaby zawierać wartość logiczną, która może być ustawiony, jeśli strona miała być pomijane
W LayoutAwarePage.cs
(klasa wszystkie ekrany dziedziczyć, generowane przez Visual Studio) Dodałem protected bool CanGoBackToThisPage { get; set; }
, które można ustawić, jeśli nie chcesz odwiedzać tej strony, ale jest też problem z tym, ponieważ czasami nie wiem, czy chcesz ponownie odwiedzić stronę, dopóki nie zrobisz czegoś na bieżącej stronie . Nie sądzę, że możesz zrobić coś takiego, jak previousFrame.CanGoBackToThisPage = true
. Poza tym obiekt Frame
, do którego masz dostęp, nie ma (jak sądzę) dostępu do rzeczywistych obiektów strony, ale raczej do obiektu podsumowującego i nie wiem, w jaki sposób uzyskać tę wartość logiczną w tym obiekcie podsumowania.
Czy ktoś wie o prosty sposób usunięcia poprzedniej/bieżącej strony ze stosu nawigacji? Wygląda na to, że byłby to bardzo powszechny problem, więc trudno mi myśleć, że Microsoft nie dał nam tego sposobu.
Dzięki
Próba ręcznego edytowania historii nawigacji to zły pomysł. Możesz po prostu przejść wstecz, a następnie sprawdzić, czy powinieneś kontynuować nawigację wstecz. – mydogisbox