2012-09-27 27 views
7

En mi aplicación, todo el material está solo en modo Paisaje. No quiero que la aplicación sea funcional en el modo vertical. ¿Cómo limito la orientación?¿Cómo limitar la orientación en las aplicaciones metropolitanas?

Gracias.

+2

Al no suscribir el evento de orientación cambiada (no hacer nada cuando la orientación cambia). –

+0

En su archivo appmanifest, puede limitar las orientaciones admitidas. –

+0

Gracias por la respuesta, he intentado limitar las cosas en Appmanifest. Pero cuando giro la pantalla y los veo, se vuelven un poco raros en el modo vertical. – indiaxxo

Respuesta

4

Como se explica en this link, la configuración de preferencia de limitación de orientación de la aplicación solo se aplica en un sistema Windows 8 con HARDWARE ACCELEROMETER compatible. Esto significa que a menos que Windows sepa cómo se orienta el sistema a través de un sensor admitido, no intentará cambiar a la orientación preferida de la aplicación.

Así que todo dependerá del hardware del usuario.

+0

Perfecto .. Gracias por los ans. – indiaxxo

4

Tuve este problema tan bien como quería restringir mi juego al modo horizontal. Pongo esto en mi manejador OnLaunched para App.xaml:

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

Sin embargo, me tomó nota de que en el simulador parecía ignorar este mientras que en la tableta de hardware que probé en él parecía comportarse adecuadamente. Las Preferencias de rotación automática son indicadores de bits para que pueda o pueda combinar todas las orientaciones que quiera permitir.

+0

punta del simulador me salvó el tiempo – root

0

Para las personas que buscan responder a esta pregunta que no está escribiendo una aplicación de Metro (donde se puede establecer orientaciones preferentes en el manifiesto o tener acceso a Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences) ...

No hay forma real de no dejar el cambio de orientación, sin embargo, si usted está interesado en que sólo permite paisaje que podría hacer algo como esto:

Ver Modelo:

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"); 
} 

en principal que Window.xaml:

<Border > 
    <Border.Style> 
     <Style TargetType="{x:Type Border}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsLandscape}" Value="False"> 
        <Setter Property="LayoutTransform"> 
         <Setter.Value> 
          <RotateTransform Angle="90"/> 
         </Setter.Value> 
        </Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 

///The rest of your controls and UI 

</Border> 

Así que realmente no estamos limitando la Orientación, solo estamos notando cuando sucede y volviendo a girar nuestra UI para que parezca que está en modo vertical :) Nuevamente esto es principalmente para Metro Win 8 aplicaciones y/o aplicaciones que también se ejecutan en Win 7 tabletas.

Cuestiones relacionadas