2011-11-14 10 views
6

Mi aplicación es totalmente consciente de los temas. Cuando mi aplicación está desactivada y el usuario cambia el tema de oscuro a claro (digamos) y vuelve a mi aplicación, el tema no se actualiza. Aunque el tema del teléfono es ligero, mi aplicación aún permanece oscura.¿Cómo detectar cuándo se cambia el tema en WP7?

Hice algunas pruebas, pero informan los mismos valores. Decidí una variable llamada isDarkThemeSelected, guardé el valor en el evento desactivado, cambié el tema y volví a ingresar a mi aplicación. Pero cuando se activa el evento activado, el valor de la variable sigue siendo el mismo.

¿Tiene alguna solución?

+2

¿Está haciendo una copia de seguridad de sus datos cuando navega fuera de la aplicación, si es así ... está respaldando el tema, eso podría causar un problema como ese. – Keeano

Respuesta

6

Añadir este código en su página constructor principal:

var v = (Visibility)Resources["PhoneLightThemeVisibility"]; 
Debug.WriteLine("Using " + (v == Visibility.Visible ? "light" : "dark") + " theme"); 

(detecta el tema actual y escribe en la ventana de salida de cuál se trata.)

continuación, inicie la aplicación, ver el Salida en Visual Studio, cierre la aplicación, cambie el tema, inicie la aplicación y vuelva a mirar. Si dice cosas diferentes la primera vez y la segunda vez, entonces tu aplicación no es tan consciente del tema como crees.

Editar: Parece que esto no siempre funciona debido a un Mango bug. El tema sigue siendo el mismo cuando vuelve a navegar a la aplicación después de cambiar el tema. Solo cuando el usuario reinicia la aplicación de la lista de aplicaciones, se aplica el nuevo tema.

+1

Gracias por su respuesta, he intentado con el mismo código, da el tema adecuado, pero cuando mi aplicación está desactivada y el usuario cambia el tema y activa mi aplicación, esa vez esto da información incorrecta del tema. – Santhu

+0

Luego está ejecutando este código en un lugar equivocado. Debería notar que el tema no cambia instantáneamente, sino que se vuelve activo al tema en el lanzamiento anterior, y luego cambia al nuevo tema después de renderizar la UI al menos una vez. De todos modos, no debería ser necesario verificar el tema, a menos que hayas diseñado tu aplicación muy mal. –

+0

@santhosh Tienes razón, actualicé mi respuesta. Es un error. –

Cuestiones relacionadas