2010-03-04 19 views
16

Sto cercando di creare un'applicazione wpf che consenta all'utente di modificare il tema in fase di esecuzione. Quello che ho fatto finora è creare un resourcedictionary con tutti i colori per l'applicazione definita in esso e quindi mi sto legando a questo dizionario in xaml.dizionari di risorse wpf di commutazione in fase di esecuzione

Di seguito è il codice che ho per commutare il dizionario risorse:

if (System.IO.File.Exists(fileName)) 
{ 
    using (FileStream fs = new FileStream(fileName, FileMode.Open)) 
    { 
     ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs); 
     Resources.MergedDictionaries.Clear(); 
     Resources.MergedDictionaries.Add(dic); 
    } 
} 

Questo codice funziona benissimo, e so che sta passando il dizionario risorse, ma non aggiorna gli elementi già visualizzati sullo schermo . La mia domanda è: come posso aggiornare o ricollegare lo schermo per tenere conto del nuovo dizionario delle risorse?

grazie

sm

risposta

13

Nel mio caso, ho semplicemente dovuto cambiare:

Resources.MergedDictionaries.Clear(); 
Resources.MergedDictionaries.Add(dic); 

a:

Application.Current.Resources.MergedDictionaries.Clear(); 
Application.Current.Resources.MergedDictionaries.Add(dic); 
Problemi correlati