2011-10-20 1 views
2

J'ai une application Windows Phone 7.1 dans laquelle j'ai eu trois pages, et sur chaque page j'ai 3 boutons: le premier qui mène à la page no. 1, deuxième conduisant à la page no. 2 et troisième menant à la page no. Le fait est que si je vais à la page 1 puis la page 2 - et puis si je clique sur le premier bouton pour naviguer à la première page une nouvelle instance de cette page sera créée. Au lieu de créer une nouvelle instance, je voudrais naviguer vers l'instance existante de la page à partir de la pile arrière.WP7: Est-il possible de naviguer vers une page dans le backstack au lieu de créer une nouvelle instance de cette page?

Est-ce possible?

Répondre

2

Oui, vous devez naviguer en arrière manuellement en déclenchant une Retournons (la plupart du temps équivalent à l'utilisateur en appuyant sur le bouton de retour):

NavigationService.GoBack();

Cela utilisera la pile de retour comme maintenu par le système d'exploitation. Il apparaîtra la page 2 et rétablira la page 1. Notez que vous ne pouvez pas choisir à quelle page retourner, il va en arrière une page s'il y a une page pour se rallumer dessus. Ainsi, par exemple le déclenchement d'une navigation en arrière de la page 3 vous obtiendrez à la page 2, vous ne pouvez pas choisir la page 1.

Alternativement, mais pas conseillé, vous pouvez en 7.1 pages pop la pile arrière:

NavigationService.RemoveBackEntry();

Vous pouvez ensuite accéder manuellement à la page. Mais sérieusement, essayez de ne pas le faire car cela brise les attentes des utilisateurs, à moins que vous ne gériez vous-même la page.

+0

Je vois. Je connaissais la méthode GoBack() mais je cherchais un moyen de choisir à quelle page retourner. Les retirer du backstack et ne garder qu'une seule page d'une page à la fois est définitivement une solution. Pourquoi est-ce que je veux faire ceci: si vous utilisiez une application qui fonctionne comme celle décrite ci-dessus pour 5 minutes et que vous navigueriez entre les pages comme 20 fois, vous auriez besoin de la toucher 20 fois pour Fermez cette application. –

+0

Non, si vous naviguez entre les pages en utilisant 'GoBack', le cas échéant, cela fait apparaître la page d'où vous venez. Dans votre cas, si c'est fait correctement, votre pile ne devrait jamais avoir plus de 2 pages au maximum. De plus, les boutons pour passer d'une page à l'autre ne sont pas conformes aux attentes de l'utilisateur. Si un utilisateur est à la page 2 et veut se rendre à la page 1, il y a de fortes chances pour qu'il utilise le bouton de retour. –

+0

@AdamHouldsworth Désolé pour les threads morts, mais j'ai une question à propos de 'Mais sérieusement, essayez de ne pas le faire car il casse les attentes des utilisateurs, sauf si vous gérez la page backing vous-même.) -> Paramètres -> ListOfStores -> StoreDetails (ici l'utilisateur peut confirmer le magasin sélectionné, cela déclenche la mise à jour du MainMenu). Comment puis-je revenir à la page principale après la sélection du magasin de manière "utilisateur attendu" sans utiliser nonlinearnavigationservice? –

1

Vous seriez mieux d'utiliser un framework tel que MVVM pour contrôler vos données au lieu de vous appuyer sur des instances spécifiques d'une page, tout en vous souvenant de l'endroit où l'utilisateur se trouvait sur cette page.

MVVMLight est un bon choix - http://mvvmlight.codeplex.com/

Vous auriez alors juste besoin de contrôler votre navigation mieux dans l'application de décider comment l'application devrait couler au lieu de compter sur la backstack. Retour est juste destiné à revenir en arrière sur la base du choix des utilisateurs, pas une direction de flux de votre application (ne dépend pas de lui). Les fonctionnalités telles que la suppression des entrées de retour dans mango sont une solution pour résoudre les anciens problèmes où l'utilisateur navigue à la maison et que vous voulez empêcher le retour à un point non valide dans le flux de l'application.

+0

Le contrôle des données n'est pas un problème et j'utilise déjà MVVM. Je suis juste inquiet que cela puisse affecter les performances. –

Questions connexes