J'ai la situation suivante dans mon application WinRT Metro (C # - XAML):
Utilisateur Lancez l'application et il n'est pas connecté. Dans la barre de menus, j'ai un bouton qui les navigue dans le panier d'achat. Il est important de mentionner qu'ils peuvent cliquer dessus indépendamment de l'état connecté / sortant. P>
donc j'ai ceci: p> et tout fonctionne bien, Mais quand j'essaie de presse sur le bouton de la presse sur mon panier forte> Panier forte> Je suis de retour à la page Login forte>, ce qui a du sens, car la page est dans mon historique de navigation. Mais je ne veux pas que je veux retourner l'utilisateur à Ma question est de savoir comment faire cela et comment manipuler la pile de navigation de cadre sur WinRT. J'ai essayé de retourner deux fois, mais sans chance. P> BTW, ma page est "LayoutawarePage" et j'utilise NavigationVice similaire à ceci
http://dotnetbyexample.blogspot.com/2012/06/navigationservice-for-for -winrt.html . P> p>
6 Réponses :
Vous pouvez l'approcher de différentes manières. Vous pouvez donc le faire pour que le bouton arrière navigue à plusieurs reprises jusqu'à atteindre la page d'accueil ou saute à travers la page Connexion. Vous pouvez également faire connaître la page de journalisation quelque chose qui apparaît à l'extérieur de la trame de navigation * Mise à jour p>
in 8.1 La plate-forme a introduit le code> - sur une fenêtre contextuelle ou dans une autre couche dans l'application. P>
Backstack code>
et ForwardStack code> sur le cadre
code> que vous pouvez manipuler. P>
Il y a un fichier layoutawarePage.cs dans le dossier commun de votre projet. Vous pouvez modifier le comportement du bouton arrière de ce fichier.
protected virtual void GoBack(object sender, RoutedEventArgs e) { while (this.Frame.CanGoBack) this.Frame.GoBack(); // Use the navigation frame to return to the previous page //if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack(); }
Vous pouvez appeler gohome () code> dans l'événement Back code> Button, Ça vous mènera à
Page d'accueil code> ou première page de l'application. p>
Il n'y a pas de méthode gohome code> dans
image code>. Est-ce que je manque quelque chose?
@Aleksandartoplek Je suppose que Microsoft a changé l'API de Win 8.1, il existait il y a 2 ans lorsque la question a été posée.
Oh, c'est étrange. L'ensemble du cadre de navigation a l'air incomplet à moi. J'ai fini par mettre en œuvre la pile d'histoire personnalisée.
@Aleksandartoplek Cool, vous devriez le poster comme réponse, de sorte que d'autres personnes puissent l'utiliser aussi.
à pop de la pile: Pour naviguer dans le menu principal, touchez le bouton Précédent: P> protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
// cancel the navigation
e.Cancel = true;
}
NavigationVice n'existe pas dans Winrt
Je sais que c'est vieux, mais puisque Google a trouvé cette page pour moi, peut-être que quelqu'un d'autre trouvera aussi cette page.
La réponse, tandis qu'un travail valide, ne répond pas à la question. P> Vous pouvez l'utiliser sur la page de connexion, en le supprimant de la pile arrière. P>
if(login_was_successful == true) { this.Frame.Navigate(typeof(ShoppingCard)); if(this.Frame.CanGoBack) { this.Frame.BackStack.RemoveAt(0); } }
J'ai la chance avec cadre.backstack.remove (cadre.backstack.last ()) à la page de destination (par exemple, Panier dans ce cas).
J'ai écrit mon propre service de navigation de suivi de l'histoire. Vous pouvez le trouver ici a>. Dans le cas où je déplace le fichier ou le supprimer, voici la version actuelle: p>