-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSkins.cs
38 lines (33 loc) · 1.26 KB
/
Skins.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Windows;
using WpfApp.Constants;
namespace WpfApp;
public partial class App
{
private void SkinsLoader()
{
// New key will replace old key.
ResourceDictionary lightSkinResourceDictionary = CreateSkinResourceDictionary(SkinList.LightSkinList);
// New key will replace old key.
ResourceDictionary darkSkinResourceDictionary = CreateSkinResourceDictionary(SkinList.DarkSkinList);
// Set resources to app properties.
Properties[Global.LightSkinName] = lightSkinResourceDictionary;
Properties[Global.DarkSkinName] = darkSkinResourceDictionary;
}
private static ResourceDictionary CreateSkinResourceDictionary(List<string> skinList)
{
ResourceDictionary skinResourceDictionary = new();
MergedDictionaries(skinResourceDictionary, skinList);
return skinResourceDictionary;
}
private static void MergedDictionaries(ResourceDictionary resDic, List<string> dicNames)
{
foreach (string dicName in dicNames)
{
// LoadComponent is NOT thread safe.
resDic.MergedDictionaries.Add(
(ResourceDictionary)LoadComponent(new Uri(dicName, UriKind.Relative)));
}
}
}