2012-04-21 3 views
5

Un souhait de créer une application Metro Style Windows 8 qui ne fait pas pivoter une racine Grid avec tout le contenu en mode Portrait. Je veux gérer l'orientation dans Code et par Visual States, mais maintenant, quand je fais tourner l'appareil, tout le contenu est automatiquement pivoté et remplir la nouvelle largeur et la hauteur.Orientation des poignées sous Windows 8

Comment puis-je désactiver ce comportement de rotation, c'est-à-dire désactiver l'orientation Portrait, mais être capable d'obtenir des événements sur les changements d'orientation?

En outre, Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences ne semble pas fonctionner

+0

Bonjour, avez-vous une meilleure solution à ce problème? – asitis

Répondre

0

Lorsque Windows vous dit que vous êtes en mode portrait, ajoutez un RotateTransform à votre élément racine qui rétorque que et garde les choses rendus portrait

+0

mais l'élément racine remplit la nouvelle taille de mise en page, c'est-à-dire 'height' et' width' sont échangés, et après la rotation l'élément racine ne prendra pas tout l'espace disponible et recadrera aussi – Ku6opr

3

Double cliquez sur le " Package.appxmanifest "dans votre projet d'application de métro, vous devriez voir les configurations de votre application. Dans la page "Application UI", vous pouvez trouver "Rotations prises en charge" au milieu. Vous pouvez vérifier le mode que vous avez pris en charge et laisser le mode "Portrait" décoché. Ensuite, votre application ne recevra plus aucun événement en mode "portrait".

Si vous écrivez votre propre manifiest de appx, vous pouvez ajouter le bloc suivant à l'article, comme celui-ci

<InitialRotationPreference> 
     <Rotation Preference="landscape" /> 
     <Rotation Preference="portraitFlipped" /> 
     <Rotation Preference="landscapeFlipped" /> 
    </InitialRotationPreference> 
+0

Merci pour la réponse. Le problème est que je dois recevoir des événements de changements d'orientation, mais désactiver les changements automatiques dans la mise en page lorsque l'orientation est modifiée – Ku6opr

+0

Sachez également que le simulateur ne respecte PAS ces paramètres. Vous devez les tester sur un appareil réel !! Dieu sait pourquoi. J'espère que Microsoft va régler cela. – NER1808

0

Désolé j'ai raté votre première question. Je ne pense pas que vous pouvez changer la "rotation" de l'élément racine après l'événement en mode portrait. Parce que ce n'est pas réellement tourné par rapport à l'écran, mais la taille de l'écran est changé.

Cependant, je suppose que vous voulez toujours que l'utilisateur regarde votre application en mode paysage après l'événement en mode portrait. Vous pouvez contrer la rotation perçue. Vous pouvez mettre votre logique métier dans un autre contrôle utilisateur sans taille prédéfinie. Mettez ce contrôle utilisateur dans la page racine. Lorsque vous avez reçu l'événement en mode portrait, vous affectez la page ActualWidth à la hauteur de contrôle utilisateur, la page ActualHeight au contrôle utilisateur Width, l'utilisateur contrôle une transformation de rendu de 90 degrés et rend le centre de transformation x = height * 0.707/width, y = 0.5, le contrôle de l'utilisateur devrait alors simplement correspondre à la position du mode paysage.

+0

Je pensais à une telle approche avant mais après la rotation, j'ai un contrôle recadré sur les côtés. Peut-être une solution de contournement existe, mais une recherche courte ne me donne pas un résultat. – Ku6opr

Questions connexes