H.B.'s answer did not run for me, I had to do this (works, tested):
Uri dictUri = new Uri(@"/Resources/Themes/MyTheme.xaml", UriKind.Relative); ResourceDictionary resourceDict = Application.LoadComponent(dictUri) as ResourceDictionary; Application.Current.Resources.MergedDictionaries.Clear(); Application.Current.Resources.MergedDictionaries.Add(resourceDict);
To pretty it up:
// Place in App.xaml.cs public void ChangeTheme(Uri uri) { ResourceDictionary resourceDict = Application.LoadComponent(uri) as ResourceDictionary; Application.Current.Resources.MergedDictionaries.Clear(); Application.Current.Resources.MergedDictionaries.Add(resourceDict); } // Example Usage (anywhere in app) private void ThemeRed_Click(object sender, RoutedEventArgs e) { var app = App.Current as App; app.ChangeTheme(new Uri(@"/Resources/Themes/RedTheme.xaml", UriKind.Relative)); }