Windows Phone: Controlar el cambio de tema del móvil en nuestras aplicaciones

Uno de los aspectos más complejos de controlar cuando diseñamos/desarrollamos una aplicación para Windows Phone es el cambio de tema del móvil. Por defecto, el emulador aparece con el tema “Oscuro” o “Dark”, con lo que, los textos salen en color blanco. Si lo cambiamos al tema “Claro” o “Light”, los colores se invierten.

Dado que lo que se busca al desarrollar una aplicación para Windows Phone es conseguir muchas descargas, es importante darle un aspecto agradable, con colores, fondo de pantalla,…

Ahora bien, en mi caso, he sufrido el mismo problema con 3 aplicaciones diferentes.

 

El problema “pequeño” surge con que la imagen de fondo de las tres aplicaciones es oscuro (el de boplace es gradual de claro a oscuro) y, al cambiar el tema del móvil a “Claro”… ¡¡¡tacháaannn!!! El color de los textos se cambia a oscuro y no se puede leer nada y Microsoft no certificará nuestra aplicación para el MarketPlace (creedme que ni aunque sea uno sólo de los textos).

La solución “larga” y “tediosa” es asignar siempre un color a cada uno de los textos que hay en las aplicaciones, con lo que… si no lo vamos haciendo a medida que desarrollamos la aplicación, tendremos un largo de aburrimiento buscando, cambiando textos y probando de nuevo.

Hasta ahí, es asumible y se aprende a controlar el color siempre que se pone un control de texto o un estilo, pero… ahora llega el gran problema que me ha surgido en una nueva aplicación: ¿Qué ocurre cuando tenemos un campos de introducción de datos como TextBox? Pues ocurre que se hace muy muy complicado controlarlo y que tendremos que buscar alguien que le haya dado solución al problema y…. violà, encontré una solución en este artículo de WindowsPhoneGeek en el que se aplica un estilo a los TextBox para mantener siempre el mismo modo de visualización.

¿Qué os ha parecido? ¿Una buena solución y todo perfecto? Pues esto no ha acabado… Tengo un DatePicker y unos cuántos DigitLoopingSelector del Toolkit que siguen sin verse con el tema claro del móvil  Sad smile 

Mi primera reacción fue buscar de nuevo algún artículo en el que se resuelva el problema para alguno de estos controles pero, tras mucho buscar no encontré nada y empecé a barajar quitarle el fondo sólo a estas páginas o crear un fondo de color inverso, es decir, el mismo fondo pero en colores claros y controlar en código cuál de los dos mostrar en función del tema del móvil. Pero justo cuando ya no me quedaban esperanzas encontré la solución de todas las soluciones, que hacía innecesario el estilo aplicado al TextBox de antes y que nos hará felices a todos. Jeff Wilcox ha creado una solución que se puede encontrar en Nuget con la que podemos forzar a nuestra aplicación para que mantenga el tema que nosotros quedamos Oscuro o Claro, con lo que no tendremos que preocuparnos de si algún control de texto se nos ha quedado sin asignar color o si hemos añadido un control del toolkit y no podemos controlar su visualización en algún tema,… El ejemplo lo podéis encontrar aquí

2 Comentarios

  1. omarvr

    Hola Santiago…

    En principio a mi me pasó algo parecido y opté por mantener el tema fijo para mi aplicación, pero luego pensé q si el usuario quiere cambiar de tema es por algo y decidí q mi aplicación se viera siempre ya sea en temas claros u oscuro…

    De cualquier forma es verdad que hay aplicaciones que por su diseño, hacer que se vea en ambos temas es complicado, pero bueno… 🙂 a lo que iba…

    El Datepicker te dio algún problema con los temas poque tienes personalizado su estilo? te lo comento porque yo uso varios Datepicker y TimePicker y se ven bien en temas claros y oscuro 🙁 Quizás me esté perdiendo algo y sería bueno saberlo para no caer en ello ;)…

    Gracias por publicar la solución de Jeff Wilcox, no la conocía y lo pasé muy mal intentándolo 🙂

    Un salu2

  2. santypr

    Hola Omar.
    El DatePicker me dio problemas pero sólo en el control que muestra la fecha puesto que la «página» a la que te envía para modificarla sí que funcionaba correctamente. El estilo que le tengo aplicado es el básico, no modifiqué colores de fondo ni nada parecido.
    El problema, como comenté en el artículo es que el fondo de mi aplicación es una imagen muy oscura y, al cambiar el tema a claro, los controles pasan a tener el texto negro y el fondo muy translúcido con lo que no se distiguen. De hecho, llegué a pensar que el datepicker no estaba porque no se diferenciaba nada del fondo.
    Esto sucede así, porque el ControlTemplate que tiene definido por defecto, está asociado a los colores del sistema y, si tienes de fondo una imagen fija que nunca va a cambiar en función del tema seleccionado en el móvil corres el riesgo de que te ocurra lo que a mi.
    Gracias por leer el artículo y por la preocupación en tu comentario
    Saludos =o)

Deja un comentario

Tema creado por Anders Norén