2016-03-09 12 views
7

Ho un requisito molto semplice per utilizzare le immagini a tema chiaro/scuro. Mi aspettavo che un qualificatore comeQualificazioni delle risorse tema scuro/chiaro

SomeImage.Theme-Light.png 

o di mettere l'immagine in una cartella denominata tema-Light

Theme-Light/SomeImage.png 

avrebbe funzionato, e lo ha fatto, ma solo in modalità di progettazione. Non appena eseguo l'app, anche se il tema richiesto è impostato correttamente (sia a livello di app che di pagina in modo che tutte le altre ThemeResources vengano caricate correttamente), viene caricata un'immagine sbagliata.

Conosco soluzioni alternative per caricare immagini diverse per temi diversi, quindi non è quello che sto cercando. Sono curioso di sapere perché questo approccio con i qualificatori non funziona in runtime? C'è un qualificatore di nome diverso che dovrebbe essere usato?

ho letto questo articolo: "How to name resources using qualifiers (XAML)" ma si vede solo come denominare gli attivi per quanto riguarda il sostegno ad alto contrasto

+0

encounte suonalo io stesso con l'immagine dello splashscreen. Voglio un'icona bianca per il tema scuro su WP10, un altro colore per il tema bianco – Quincy

+0

Utilizzare "contrasto-bianco" e "contrasto-nero" dovrebbe essere la strada da percorrere, anche ad es. Groove Music utilizza questo approccio. Funziona perfettamente nelle mie app, l'unica eccezione è la schermata iniziale. – sibbl

+0

@sibbl grazie per il suggerimento, ma questo non funziona a meno che non sia attivato il Contrasto elevato. Il nome file è (ad esempio, la scala 150): LogoWithName.scale-150_contrast-black.png. Sei sicuro che non ci sia qualcos'altro che stai impostando per farlo funzionare? –

risposta

2

Questa aproach non è così conveniente come qualificazioni, ma funziona

Definisci.. in App.xaml

<ResourceDictionary> 
    <ResourceDictionary.ThemeDictionaries> 
     <ResourceDictionary x:Key="Light"> 
      <ImageSource x:Key="Logo">/Assets/Logo-White.png</ImageSource> 
     </ResourceDictionary> 

     <ResourceDictionary x:Key="Dark"> 
      <ImageSource x:Key="Logo">/Assets/Logo-Blue.png</ImageSource> 
     </ResourceDictionary> 

     <ResourceDictionary x:Key="HighContrast"> 
      <ImageSource x:Key="Logo">/Assets/Logo-White.png</ImageSource> 
     </ResourceDictionary> 
    </ResourceDictionary.ThemeDictionaries> 
</ResourceDictionary> 

Quindi utilizzare

<Image Source="{ThemeResource Logo}"/> 
Problemi correlati