9
votes

WinRT - Comment ignorer ou supprimer la page de l'historique de navigation

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.

donc j'ai ceci: xxx

et tout fonctionne bien, Mais quand j'essaie de presse sur le bouton de la presse sur mon panier Panier Je suis de retour à la page Login , 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 à page d'accueil et saute la page de connexion.

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.

BTW, ma page est "LayoutawarePage" et j'utilise NavigationVice similaire à ceci http://dotnetbyexample.blogspot.com/2012/06/navigationservice-for-for -winrt.html .


0 commentaires

6 Réponses :


12
votes

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 - sur une fenêtre contextuelle ou dans une autre couche dans l'application.

* Mise à jour

in 8.1 La plate-forme a introduit le Backstack et ForwardStack sur le cadre que vous pouvez manipuler.


0 commentaires

2
votes

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();
        } 


0 commentaires

0
votes

Vous pouvez appeler gohome () dans l'événement Back Button, Ça vous mènera à Page d'accueil ou première page de l'application.


4 commentaires

Il n'y a pas de méthode gohome dans image . 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.



-3
votes

à pop de la pile: xxx pré>

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;
}


1 commentaires

NavigationVice n'existe pas dans Winrt



9
votes

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);
    }
}


1 commentaires

J'ai la chance avec cadre.backstack.remove (cadre.backstack.last ()) à la page de destination (par exemple, Panier dans ce cas).



0
votes

J'ai écrit mon propre service de navigation de suivi de l'histoire. Vous pouvez le trouver ici .

Dans le cas où je déplace le fichier ou le supprimer, voici la version actuelle: xxx


0 commentaires