[#4] WP7Tips: cambiare dinamicamente le immagini in funzione del tema

Share on:

Collegato al tip #3 relativo al capire se abbiamo un tema chiaro o scuro.

Le icone dell’AppBar se impostate correttamente (bianche su sfondo trasparente) si adattano automaticamente al tema visualizzato,  ma come fare per altre icone/immagini che avete sulle pagine, pivot o panorami delle vostre applicazioni?

Io uso un converter, dove App.CurrentTheme è quello definito al tip #3:

public class ThemeFileConverter : IValueConverter{    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)    {        if (value != null )        {            string name = value.ToString();            if (App.CurrentTheme == Theme.Light)            {                return name.Replace(".png", " - white.png");            }            return name;        }        return null;    }     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)    {        throw new NotImplementedException();    }}

Come vedete, la mia convenzione è semplice, le immagini per il tema “scuro” sono “file.png”, quelle del tema chiaro sono “file – white.png”, nella stessa cartella.

Voi naturalmente potete scegliere la convenzione che volte modificando la riga in neretto.

Poi nella pagina metto, subito dopo <phone:PhoneApplicationPage>

phoneNavigation:PhoneApplicationPage.Resources        <converters:ThemeFileConverter x:Key="tfCnv"/></phoneNavigation:PhoneApplicationPage.Resources>

A questo punto basta specificare il converter nella proprietà Source dell’immagine:

Post originale