Cómo implementar la tematización en wpf

Quiero implementar el tema de tipo ASP.Net en WPF. El usuario tiene una selección de varios temas predefinidos y puede cambiar a otro tema.

Para implementar esto, he intentado crear diferentes artículos de recursos para cada tema y almacenar el estilo requerido con la clave. La colección de claves es la misma en todos los temas, pero su definición es diferente en cada tema.

Estoy usando el siguiente código para cambiar de tema al hacer clic:

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

En todas las páginas / usercontrol / windows, he establecido StaticResource y aplicado la clave apropiada. Cuando cambio a otro tema esSolo se aplica después del próximo evento en la interfaz de usuario.

Si configuro cambiar StaticResource a DynamicResource, se aplicará de inmediato.

Por favor, comparte tu idea para lograr esto con StaticResource?

Respuestas a la pregunta(2)

Su respuesta a la pregunta