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?