Fermer

février 15, 2021

Application de la navigation simple dans les formulaires Xamarin4 minutes de lecture



Comment changer de page dans Xamarin.Forms? Xamarin.Forms nous offre des outils simples mais puissants pour contrôler la navigation dans nos applications.

L'une des fonctionnalités les plus importantes d'une application est de pouvoir naviguer entre différentes pages, car cela nous donne la possibilité d'interagir avec tous les fonctionnalités qu'une application nous fournit. Pour ce faire, nous pouvons utiliser un framework ou simplement l'implémenter de manière simple! Dans ce cas, nous allons apprendre à effectuer des navigations simples dans Xamarin Forms! Les sujets seront divisés en points suivants:

➖ Qu'est-ce que la navigation
➖ Push & Pop
➖ Manipulation de la navigation
➖ Passer des arguments
➖ Conseils supplémentaires

Qu'est-ce que la navigation

] La navigation n'est rien de plus que l'action qui permet de modifier les pages dans nos applications.

Pour l'obtenir, nous utilisons la classe NavigationPage, qui gère la navigation en mode hiérarchique, créant une pile LIFO de pages. LIFO signifie «dernier entré, premier sorti», ce qui signifie que la dernière page à entrer (push) est la première à apparaître.

Push & Pop

Il existe deux façons de naviguer: avec Push ou Pop . Lorsque nous voulons passer à une nouvelle page, cela est ajouté à la pile de navigation – cela s'appelle Push. Mais si nous voulons revenir en arrière, la pile est juste retournée avec la page correspondant à la page précédente dans la pile, supprimant la page active (la page sur laquelle nous sommes maintenant) – cela s'appelle Pop.

Voyons maintenant comment les utiliser!

Push

 La page 1 a une flèche sur la page 2, qui est placée dessus. Ensuite, la page 2 a une flèche vers la page 3, qui est placée au-dessus des deux.

À utiliser en C #:

 async   void   NextPage   ( ] objet  expéditeur  EventArgs e )  
 {
          wait  Navigation .  PushAsync  ( new   YourPageName  () ) ; 
} 

Pop

 La page 1 se trouve au-dessus de deux autres pages. Il a une flèche vers la page 2, qui indique quand la page 1 est supprimée. Une autre flèche indique la page 3 lorsque la page 2 est supprimée.

À utiliser en C #:

 async   void   BackToPage   ( object  sender  EventArgs e )  
 {
         wait  Navigation .  PopAsync  () ; 
} [19659044] Navigation Manipulation 

Navigation nous donne également les méthodes InsertPageBefore et RemovePage qui nous permettent de manipuler la page qui sera affichée dans la pile de navigation de notre application.

InsertPageBefore

Cette méthode insère une page spécifique dans la pile de navigation avant une page existante dans la pile. Cette méthode reçoit deux paramètres: la page active et la page précédente.

 Navigation .  InsertPageBefore   ( new   MainPage   () [19659014] this ) ; 

RemovePage

Cette méthode supprime une page spécifique dans la pile de navigation. Cette méthode ne reçoit qu'un seul paramètre, à savoir la page qui sera supprimée.

 Navigation .  RemovePage   ( new   MainPage ) ; [19659068] Mais… que se passe-t-il si nous voulons supprimer toute la pile de navigation?  🤔 

Pour ce faire, nous avons la méthode PopToRootAsync qui se charge de supprimer toutes les pages contenues dans la navigation pile sauf la page racine, ce qui en fait la page active.

  async   void   ClearNavigationStack   ( object  sender  EventArgs e  ]) 
 {
         wait  Navigation .  PopToRootAsync   () ; 
} 

Passer des arguments

Il est très important de établissez la communication entre ces pages, surtout si vous avez besoin de transmettre certaines données. Nous avons deux manières d'obtenir ceci: Via un constructeur ou un objet BindingContext . Comprenons chacun d'eux!

🔹 En utilisant le constructeur nous pouvons l'obtenir en deux étapes:

Étape 1: Ajout d'un paramètre dont vous avez besoin dans la page du constructeur. [19659048] public MainPage ( string YourName )
{
InitializeComponent () ;
Name = YourName ;
}

Étape 2: Transmettez les données lorsque vous appelez la page utilisée auparavant. (MainPage)

  wait  Navigation .  PushAsync  ( new   YourPageName  ( "MariaWhite" ) ) ]) ; 

🔹 Utilisation d'un objet Contexte de liaison:

Dans cet exemple, créons une méthode nommée FillDataClicked, et à l'intérieur ajoutons des données d'objet (dans ce cas, avec la classe Contact). Passez ensuite l'objet créé dans votre page BindingContext.

  async   void   FillDataClicked   ( object  sender  EventArgs e ) 
 {
     var  contact  =   new   Contact   {
        Nom  =   "Merrie" 
        LastName  =   "Blanc" 
        Pays  =   "USA" 
  } ; 
  
    var  contactsPage  =   new   ContactsPage   ()  ; 
   contactsPage .  BindingContext  =  contact ; 
    wait  Navigation .  PushAsync   ( contactsPage ) [19659021]; 
} 

Conseils supplémentaires

Pour supprimer le bouton arrière: Il vous suffit d'utiliser la ligne suivante dans vos propriétés XAML.

 NavigationPage.HasBackButton = "False"

Pour ajouter un contrôle à votre barre de navigation:
Pour accéder au contrôle de la barre de navigation, il vous suffit d'ajouter les balises . À l'intérieur de ces balises, vous pouvez ajouter n'importe quel contrôle dont vous avez besoin. (Par exemple: vous pouvez ajouter un bouton, une étiquette, une image.) Dans l'exemple, j'ai ajouté un sélecteur pour sélectionner une tranche d'âge.

  < NavigationPage .  TitleView > 
        < Picker Title  =  "Sélectionnez la tranche d'âge:" > 
            < Picker .  Items > 
                < x :  Chaîne >  18   -   21  < /  x :  Chaîne > 
                < x :  Chaîne >  21   -   30  < /  x :  Chaîne > 
                < x :  Chaîne >  30  et suivantes  < /  x :  String > 
            < /  Picker .  Items > 
        < /  Picker > 
 < /  Navig ationPage .  TitleView > 

Pour masquer la barre de navigation: Il vous suffit d'utiliser la ligne suivante dans vos propriétés XAML.

 NavigationPage.HasNavigationBar = "false"

C'est tout pour aujourd'hui! J'espère que cet article vous sera utile!

Merci d'avoir lu! 💚

Références: https://docs.microsoft.com/es-es/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical




Source link

0 Partages