2010-03-04 30 views
16

Próbuję utworzyć aplikację wpf, która pozwala użytkownikowi zmienić motyw w czasie wykonywania. To, co do tej pory zrobiłem, to stworzenie resourcedictionary z wszystkimi kolorami dla aplikacji zdefiniowanej w nim, a następnie wiążę ten słownik w Xaml.przełączanie słowników aplikacji wpf w czasie wykonywania

Poniżej znajduje się kod mam do przełączania słownika zasobu:

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); 
    } 
} 

Ten kod działa dobrze i wiem, że jest przełączanie słownika zasobu, ale nie aktualizuje elementy już wyświetlane na ekranie . Moje pytanie brzmi: jak mogę odświeżyć lub ponownie powiązać ekran, aby uwzględnić nowy słownik zasobów?

dzięki

sm

Odpowiedz

13

W moim przypadku, po prostu musiał zmienić:

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

do:

Application.Current.Resources.MergedDictionaries.Clear(); 
Application.Current.Resources.MergedDictionaries.Add(dic); 
Powiązane problemy