|
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Resources;
using System.Text.RegularExpressions;
using System.Windows;
namespace BookReader.Common
{
internal class ThemeHelper
{
/// <summary>
/// Load a given theme resources based on the resource name discovered by the <see cref="DiscoverThemes"/> method />
/// </summary>
/// <param name="themeColor"></param>
static public void LoadTheme(string themeColor)
{
Application.Current.Resources = (ResourceDictionary)Application.LoadComponent(
new Uri(string.Format("Resources\\Themes\\{0}.xaml", themeColor), UriKind.Relative));
}
/// <summary>
/// Loop in the resources to discover all theme names
/// </summary>
static public List<String> DiscoverThemes()
{
List<String> result = new List<string>();
foreach (String resourceName in Application.ResourceAssembly.GetManifestResourceNames())
{
if (resourceName.ToLower().EndsWith(".g.resources"))
{
using (Stream stream = Application.ResourceAssembly.GetManifestResourceStream(resourceName))
{
using (ResourceReader reader = new ResourceReader(stream))
{
foreach (DictionaryEntry entry in reader)
{
Regex regex = new Regex(@"resources/themes/(\w+).baml");
Match m = regex.Match(entry.Key.ToString());
if (m.Success)
{
//add the theme to the list
result.Add( m.Groups[1].Value.ToString() );
}
}
}
}
}
}
return result;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
WPF and MVVM fan, I practice C # in all its forms from the beginning of the NET Framework without mentioning C ++ / MFC and other software packages such as databases, ASP, WCF, Web & Windows services, Application, and now Core and UWP.
In my wasted hours, I am guilty of having fathered C.B.R. and its cousins C.B.R. for WinRT and UWP on the Windows store.
But apart from that, I am a great handyman ... the house, a rocket stove to heat the jacuzzi and the last one: a wood oven for pizza, bread, and everything that goes inside
https://guillaumewaser.wordpress.com/
https://fouretcompagnie.wordpress.com/