namespace FluentTest.Helpers { using System; using System.Diagnostics; using System.IO; using System.Linq; using System.Windows; using System.Windows.Markup; using System.Windows.Media; using System.Xml; using ControlzEx.Theming; public static class ThemeHelper { public static Tuple CreateTheme(string baseColorScheme, Color accentBaseColor, bool changeImmediately = false) { var theme = RuntimeThemeGenerator.Current.GenerateRuntimeTheme(baseColorScheme, accentBaseColor, false); // Apply theme if (changeImmediately) { var changedTheme = ThemeManager.Current.ChangeTheme(Application.Current, theme); Debug.Assert(changedTheme == theme, "Theme must have been changed."); } return new Tuple(string.Join(Environment.NewLine, theme.GetAllResources().Select(GetResourceDictionaryContent)), theme); } public static string GetResourceDictionaryContent(ResourceDictionary resourceDictionary) { using (var sw = new StringWriter()) { using (var writer = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, IndentChars = " " })) { XamlWriter.Save(resourceDictionary, writer); return sw.ToString(); } } } } }