2012-09-27 14 views
7

Nella mia app, tutto è solo in modalità orizzontale. Non voglio che l'app funzioni in modalità verticale. Come posso limitare l'orientamento?Come limitare l'orientamento nelle app metropolitane?

Grazie.

+2

Non effettuando la sottoscrizione per l'evento modificato dell'orientamento (non facendo nulla quando l'orientamento cambia). –

+0

Nel file appmanifest, è possibile limitare gli orientamenti supportati. –

+0

Grazie per la risposta, ho provato a utilizzare elementi limitanti in Appmanifest. Ma quando ruoto il mio schermo e li vedo, diventano un po 'strani in modalità Ritratto. – indiaxxo

risposta

4

Come spiegato in this link, l'impostazione della preferenza di limitazione dell'orientamento dell'app viene applicata solo su un sistema Windows 8 con un ACCELEROMETRO HARDWARE supportato. Ciò significa che, a meno che Windows non sappia come il sistema è orientato attraverso i mezzi di un sensore supportato, non tenterà di passare all'orientamento preferito dell'app.

Quindi tutto dipenderà dall'hardware dell'utente.

+0

Perfetto .. Grazie per gli ans. – indiaxxo

4

Ho avuto questo problema e volevo limitare il mio gioco solo alla modalità orizzontale. Ho messo questo nel mio gestore OnLaunched per App.xaml:

 Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences = 
      Windows.Graphics.Display.DisplayOrientations.Landscape; 

Tuttavia ho notato che nel simulatore sembrava ignorare questo, mentre sulla tavoletta hardware ho testato su di esso sembrava comportarsi in modo appropriato. Le AutoRotationPreferences sono flag di bit in modo da poter o insieme tutti gli orientamenti che si desidera consentire.

+0

Il simulatore mi ha fatto risparmiare tempo – root

0

per chi cerca di rispondere a questa domanda che non sta scrivendo un app Metro (dove è possibile impostare orientamenti preferenziali nel manifesto o avere accesso a Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences) ...

Non c'è modo vero e proprio per non lasciare la modifica Orientamento, se siete interessati a consentendo solo paesaggio si potrebbe fare qualcosa di simile:

Vista Modello:

Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new   
    EventHandler(SystemEvents_DisplaySettingsChanged); 
} 

public bool IsLandscape { get; set; } 

void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e) 
{ 
    if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight) 
    { 
     IsLandscape = true; 
    } 
    else 
    { 
     IsLandscape = false; 
    } 

    RaisePropertyChanged("IsLandscape"); 
} 

in te principale Window.xaml:

Quindi non stiamo davvero limitando l'orientamento, stiamo solo notando quando succede, e ruotando la nostra interfaccia utente così sembra ancora che sia in modalità Ritratto :) Ancora una volta questo è in gran parte per non Metro Win 8 applicazioni e/o applicazioni che funzionano anche su Win 7 compresse.

Problemi correlati