2011-05-13 6 views
5

¿Es posible bloquear manualmente la orientación del teléfono en Windows phone 7? Porque estoy usando el acelerómetro para manejar la rotación de los botones con una IU fija.WP7 (Windows phone 7) Bloquee la orientación del teléfono en XAML o C#

lo he intentado:

En el XAML

SupportedOrientations="Landscape" Orientation="LandscapeLeft" 
OrientationChanged="PhoneApplicationPage_OrientationChanged" 

Y en el código subyacente:

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) 
{ 
    //Orientation locking 
    //Do nothing 
} 

Pero la interfaz de usuario todavía se está desplazando entre izquierda horizontal y paisaje derecho ...

Gracias.

Respuesta

5

No hay forma de evitar el cambio entre LandscapeLeft y LandScapeRight. Esto es por diseño.

Como solución temporal, puede rotar/transformar manualmente sus elementos UIE en OnOrientationChanged para que el usuario no vea la diferencia.
He usado esta técnica para evitar que una imagen de "fondo" gire independientemente de la orientación, pero luego aparece un control separado que aparece como una ventana emergente pero que responde a los cambios de orientación que se muestran en la parte superior de la imagen.

+0

Vea el código de ejemplo aquí http://forums.create.msdn.com/forums/t/70673.aspx –

0

agregar esto this.SupportedOrientations = SupportedPageOrientation.Portrait; después de InitializeComponent(); en MainPage() constructor para bloquear la orientación en el modo vertical. Funciona bien para mí.

2

Hola, he encontrado una solución anulando método OnOrientationChanged. Esto funciona para mi. Eso no afecta la bandeja del sistema ni el menú de la aplicación, pero la página permanece en la orientación seleccionada.

protected override void OnOrientationChanged(OrientationChangedEventArgs e) 
{ 
    if (e.Orientation == PageOrientation.LandscapeLeft) 
     base.OnOrientationChanged(e); 
}