Jak zaimplementować motywowanie w wpf

Chcę zaimplementować motyw typu ASP.Net w WPF. Użytkownik ma wybór różnych predefiniowanych tematów i może przełączyć się na inny motyw.

Aby to zrealizować, spróbowałem stworzyć inny słownik zasobów dla każdego tematu i zapisać wymagany styl za pomocą klucza. Zbiór kluczy jest taki sam we wszystkich tematach, ale jego definicja jest różna w każdym z nich.

Korzystam z poniższego kodu, aby zmienić motyw na kliknięcie:

var theme = Application.LoadComponent(uri) as ResourceDictionary;
Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(theme);

Na wszystkich stronach / usercontrol / windows ustawiłem StaticResource i zastosowałem odpowiedni klucz. Kiedy przełączam się na inny motyw, jeststosowane tylko po kolejnym zdarzeniu w interfejsie użytkownika.

Jeśli ustawię zmianę StaticResource na DynamicResource, to zostanie ona zastosowana natychmiast.

Podziel się swoim pomysłem, aby to osiągnąć za pomocą StaticResource?

questionAnswers(2)

yourAnswerToTheQuestion