Naviguer vers une autre page lorsque l’orientation est modifiée

J’expliquerai ce que j’essaie de faire dans l’exemple suivant:

J’ai deux pages – MainPage.xaml (orientation Portrait) et LandscapeLeft.xaml (orientation LandscapeLeft).

Je souhaite naviguer de MainPage.xaml à LandscapeLeft.xaml lorsque l’utilisateur fait pivoter son téléphone sur la position Lanscape.

J’ai fait comme suit:

XAML:

  SupportedOrientations="PortraitOrLandscape" Orientation="Portrait" 

code derrière:

  protected override void OnOrientationChanged(OrientationChangedEventArgs e) { switch (e.Orientation) { case PageOrientation.LandscapeLeft: NavigationService.Navigate(new Uri("/LandscapeLeft.xaml", UriKind.RelativeOrAbsolute)); break; } base.OnOrientationChanged(e); } 

Lorsque je fais pivoter le téléphone de PortraitUp à la position LandscapeLeft, voici ce qui se produit:
Premièrement, le contenu de MainPage.xaml fait pivoter paysage et vient ensuite charger LandscapeLeft.xaml.

Ce que je veux faire, c’est éliminer le processus de rotation du contenu de MainPage.xaml. Cela n’a pas l’air bien et affecte les performances. Lorsque je fais pivoter le téléphone, je souhaite simplement que LandscapeLeft.xaml soit chargé sans modification préalable de l’orientation du contenu de MainPage.xaml.

S’il vous plaît, des suggestions?

Que diriez-vous de mettre votre contenu dans un cadre. Lorsque l’événement d’orientation se déclenche, modifiez le contenu du cadre au lieu de naviguer vers une autre page.

  ... case PageOrientation.LandscapeLeft: FrmContents= new LandscapeLeft(); ... 

Cela devrait régler vos problèmes de performance.

Il suffit de mettre toutes les fonctionnalités sur une page, puis de modifier les informations affichées en fonction de l’orientation.

En tant qu’utilisateur, je ne pense pas que vous devriez utiliser Navigation pour obtenir cet effet.

La navigation est très étroitement liée au bouton Précédent – ce n’est donc pas quelque chose qu’un utilisateur s’attend normalement à être également lié à l’orientation du périphérique.

Les choses que vous pourriez probablement faire sont:

  • Pensez à héberger les commandes portrait et paysage dans le fichier mainpage.xaml. Il vous suffit de modifier la “visibilité” des 2 commandes en fonction de l’orientation.
  • Dans la mesure du possible, envisagez d’utiliser les mêmes commandes pour les deux orientations, mais avec des modifications de disposition appropriées pour les deux orientations.

J’ai écrit des applications prenant en charge les deux orientations – elles semblent très performantes – quels problèmes de performance rencontrez-vous?