如何使用 C# 而不是 XAML 将两个 ResourceDictionary 对象合并到 Application.Current.Resources 中?
How can I merge two ResourceDictionary objects into Application.Current.Resources using C# instead of XAML?
这是我遇到的情况。为本示例标记的两个资源字典 Theme1 和 Theme2
public class Theme1 : ResourceDictionary
{
protected Theme1()
{
Add(nameof(IconColor), "#111111");
Add(nameof(PageBackgroundColor), "#111111");
}
public Color IconColor { get; }
public Color PageBackgroundColor { get;
}
public class Theme2 : ResourceDictionary
{
protected Theme2()
{
Add(nameof(IconColorA), "#222222");
Add(nameof(PageBackgroundColorA), "#222222");
}
public Color IconColorA { get; }
public Color PageBackgroundColorA { get; }
}
我想将这两个都分配给 Application.Current.Resources,但我只知道怎么做:
Application.Current.Resources = new Theme1();
或
Application.Current.Resources = new Theme2();
如何将两者分配给 Application.Current.Resources?我认为在 XAML 中有一种方法可以做到这一点,但我在 C# 中找不到任何方法可以做到这一点。
您可以将它们添加到 MergedDictionaries
属性:
Application.Current.Resources.MergedDictionaries.Add(new Theme1());
Application.Current.Resources.MergedDictionaries.Add(new Theme2());
这是我遇到的情况。为本示例标记的两个资源字典 Theme1 和 Theme2
public class Theme1 : ResourceDictionary
{
protected Theme1()
{
Add(nameof(IconColor), "#111111");
Add(nameof(PageBackgroundColor), "#111111");
}
public Color IconColor { get; }
public Color PageBackgroundColor { get;
}
public class Theme2 : ResourceDictionary
{
protected Theme2()
{
Add(nameof(IconColorA), "#222222");
Add(nameof(PageBackgroundColorA), "#222222");
}
public Color IconColorA { get; }
public Color PageBackgroundColorA { get; }
}
我想将这两个都分配给 Application.Current.Resources,但我只知道怎么做:
Application.Current.Resources = new Theme1();
或
Application.Current.Resources = new Theme2();
如何将两者分配给 Application.Current.Resources?我认为在 XAML 中有一种方法可以做到这一点,但我在 C# 中找不到任何方法可以做到这一点。
您可以将它们添加到 MergedDictionaries
属性:
Application.Current.Resources.MergedDictionaries.Add(new Theme1());
Application.Current.Resources.MergedDictionaries.Add(new Theme2());