2012-04-21 18 views
5

A desea crear una aplicación Metro Style Windows 8 que no gire una raíz Grid con todo el contenido en el modo Portrait. Deseo manejar la orientación en Code y en Visual States, pero ahora, cuando giro el dispositivo, todo el contenido gira automáticamente y rellena el nuevo ancho y alto.Orientaciones del asa en Windows 8

¿Cómo puedo desactivar este comportamiento de rotación, es decir, desactivar la orientación Portrait, pero todavía puedo obtener eventos sobre los cambios de orientación?

Además, Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences no parece funcionar

+0

Hola, ¿tienes alguna mejor solución para este problema? – asitis

Respuesta

0

Cuando Windows dice que está en el modo vertical, añadir un RotateTransform a su elemento raíz que contrarresta eso y mantiene las cosas prestados retrato

+0

pero el elemento raíz llena el nuevo tamaño del diseño, es decir, 'height' y' width' se intercambian, y después de la rotación el elemento raíz no ocupará todo el espacio disponible y también se recortará en los lados – Ku6opr

3

doble clic en el " El archivo Package.appxmanifest "en su proyecto de aplicación de metro, debería ver las configuraciones de su aplicación. En la página "Aplicación UI", puede encontrar "rotaciones admitidas" en el medio. Puede verificar el modo que admite y dejar el modo "Retrato" sin marcar. Entonces tu aplicación ya no recibirá ningún evento de modo "retrato".

Si escribe su propio Manifiesto comensales, se puede añadir siguiente bloque en la sección, como este

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

Thanks for answer. El problema es que necesito recibir eventos de cambios de orientación, pero deshabilitar los cambios automáticos en el diseño cuando se cambia la orientación – Ku6opr

+0

También tenga en cuenta que el simulador NO respeta estas configuraciones. ¡Debes probarlos en un dispositivo real! Dios sabe por qué. Con suerte, Microsoft resolverá esto. – NER1808

0

En este momento no vi a su pregunta principal. No creo que pueda cambiar la "rotación" del elemento raíz después del evento en modo retrato. Porque en realidad no gira en relación con la pantalla, pero el tamaño de la pantalla ha cambiado.

Sin embargo, supongo que aún desea que el usuario vea su aplicación en modo apaisado después del evento en modo retrato. Puedes contrarrestar la rotación percibida. Puede poner su lógica comercial en otro control de usuario sin un tamaño predefinido. Coloque este control de usuario en la página raíz. Cuando recibiste el evento de modo vertical, asignas la página ActualWidth al alto de control del usuario, la página ActualHeight al ancho de control del usuario, le das al usuario control una transformación render de 90 grados y render transforma center x = height * 0.707/width, y = 0.5, entonces el control del usuario debería simplemente alinearse a la posición del modo paisaje.

+0

Pensé en ese enfoque antes, pero después de la rotación obtengo un control recortado en los lados. Tal vez existe una solución alternativa, pero la investigación breve no me da un resultado. – Ku6opr