2016-11-22 1 views
0

J'ai une application en utilisant une page principale de détails et une page de navigation en son sein. Sur Android lorsque vous accédez à la page du compte via le menu Burger la barre de navigation reste en haut de l'écran comme prévu afin que vous puissiez naviguer en l'utilisant. Sur iOS, la barre de navigation disparaît, j'ai donc créé une barre personnalisée avec une icône de menu burger. Quand quelqu'un clique sur l'icône de la barre de navigation personnalisée, je veux que le menu Burger soit balancé depuis la gauche.Utilisation de Xamarin Forms - comment puis-je relier un bouton à un mouvement de balayage?

J'ai attaché un reconnaisseur de geste à l'icône de hamburger mais je ne sais pas quoi mettre dans la méthode appelée pour lui faire exécuter l'action de balayage.

Barre de navigation sur la deuxième page:

<StackLayout IsVisible="{Binding _isiPhone}" Orientation="Horizontal" BackgroundColor="#008334"> 
    <Image Source="burger.png" HorizontalOptions="StartAndExpand"> 
     <Image.GestureRecognizers> 
      <TapGestureRecognizer Tapped="Burger_Clicked"></TapGestureRecognizer> 
     </Image.GestureRecognizers> 
    </Image> 
</StackLayout> 

Gestionnaire d'événements:

private void Burger_Clicked(object sender, EventArgs e) 
{ 
} 

vue android:

android view

menu hamburger Android vue:

android burger menu

vue iOS (avec barre de navigation personnalisée):

iOS view

menu hamburger iOS:

iOS burger menu

Répondre

0

Vous pouvez définir la propriété "IsPresented" sur la page MasterDetail à Vrai/Faux pour afficher/masquer le menu latéral. S'il vous plaît reconsidérer si une barre personnalisée est vraiment nécessaire, car le contrôle standard devrait être quelque chose que les utilisateurs sont habitués.

Veuillez également noter qu'il est recommandé d'utiliser une page de contenu pour la page maître, et vous pouvez utiliser une page NavigationPage/TabPage/ContentPage comme nécessaire pour la page de détails.

Référez-vous au official docs pour plus d'informations

+0

Désolé, la page intérieure est une page de contenu ne navigation. Je ne sais pas comment accéder à la propriété IsPresented à partir de la page du compte? – NinjaFocks

+0

Vous pouvez convertir Application.Current.MainPage en une MasterDetailPage. Donc quelque chose comme ((MasterDetailPage) Application.Current.MainPage) .IsPresented = true; devrait montrer le tiroir coulissant. Bien sûr, vous ne devriez utiliser cette approche que si votre MasterDetailPage sera toujours à la racine de votre application lorsque ce code est déclenché. Vous devrez peut-être tester cela ou stocker la référence d'une manière différente, ce qui convient à votre projet et constitue la solution la plus propre et la plus simple dans votre architecture d'application. – irreal