Files
Shrlalgo.RvKits/WPFluent/Markup/ThemesDictionary.cs

55 lines
1.5 KiB
C#
Raw Normal View History


using System.Windows.Markup;
2025-04-24 20:56:44 +08:00
using WPFluent.Appearance;
namespace WPFluent.Markup;
/// <summary>
2025-05-05 17:04:06 +08:00
/// 提供一个字典实现,其中包含组件和其他设备使用的 <c>WPF UI</c> 主题资源。
/// elements of a WPF application.
/// </summary>
/// <example>
2025-05-05 17:04:06 +08:00
/// <code lang="xml">
/// &lt;Application
/// xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"&gt;
/// &lt;Application.Resources&gt;
/// &lt;ResourceDictionary&gt;
/// &lt;ResourceDictionary.MergedDictionaries&gt;
/// &lt;ui:ThemesDictionary Theme = "Dark" /&gt;
/// &lt;/ResourceDictionary.MergedDictionaries&gt;
/// &lt;/ResourceDictionary&gt;
/// &lt;/Application.Resources&gt;
/// &lt;/Application&gt;
/// </code>
/// </example>
[Localizability(LocalizationCategory.Ignore)]
[Ambient]
[UsableDuringInitialization(true)]
public class ThemesDictionary : ResourceDictionary
{
2025-05-05 17:04:06 +08:00
public ThemesDictionary() { SetSourceBasedOnSelectedTheme(ThemeType.Light); }
2025-05-05 17:04:06 +08:00
private void SetSourceBasedOnSelectedTheme(ThemeType? selectedApplicationTheme)
{
var themeName = selectedApplicationTheme switch
{
2025-05-05 17:04:06 +08:00
ThemeType.Light => "Light",
ThemeType.Dark => "Dark",
ThemeType.HcWhite => "HCWhite",
ThemeType.HcBlack => "HCBlack",
_ => "Light",
};
2025-05-05 17:04:06 +08:00
Source = new Uri($"{ThemeManager.ThemesDictionaryPath}{themeName}.xaml", UriKind.Absolute);
}
/// <summary>
/// Sets the default application theme.
/// </summary>
2025-05-05 17:04:06 +08:00
public ThemeType Theme { set => SetSourceBasedOnSelectedTheme(value); }
}