BetterExplorer.MainWindow.ChangeRibbonTheme C# (CSharp) Method

ChangeRibbonTheme() public method

public ChangeRibbonTheme ( string ThemeName, bool IsMetro = false ) : void
ThemeName string
IsMetro bool
return void
    public void ChangeRibbonTheme(string ThemeName, bool IsMetro = false) {
      Dispatcher.BeginInvoke(IsMetro ? DispatcherPriority.ApplicationIdle : DispatcherPriority.Render, (ThreadStart)(() => {
        var owner = Window.GetWindow(this);
        Application.Current.Resources.BeginInit();
        Application.Current.Resources.MergedDictionaries.RemoveAt(1);

        if (IsMetro)
          Application.Current.Resources.MergedDictionaries.Insert(1, new ResourceDictionary() { Source = new Uri("pack://application:,,,/Fluent;component/Themes/Office2013/Generic.xaml") });
        else
          Application.Current.Resources.MergedDictionaries.Insert(1, new ResourceDictionary() { Source = new Uri($"pack://application:,,,/Fluent;component/Themes/Office2010/{ThemeName}.xaml") });

        Application.Current.Resources.EndInit();

        if (owner is RibbonWindow) {
          owner.Style = null;
          owner.Style = owner.FindResource("RibbonWindowStyle") as Style;
          owner.Style = null;

          // Resize Window to work around alignment issues caused by theme change
          ++owner.Width;
          --owner.Width;
        }

        Utilities.SetRegistryValue("CurrentTheme", ThemeName);
      }));
    }
MainWindow