45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
using WPFluent.Appearance;
|
|||
|
|
|
|||
|
|
using System.Windows.Markup;
|
|||
|
|
|
|||
|
|
namespace WPFluent.Markup;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Provides a dictionary implementation that contains <c>WPF UI</c> theme resources used by components and other
|
|||
|
|
/// elements of a WPF application.
|
|||
|
|
/// </summary>
|
|||
|
|
/// <example>
|
|||
|
|
/// <code lang="xml"> /// <Application /// xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"> ///
|
|||
|
|
/// <Application.Resources> /// <ResourceDictionary> ///
|
|||
|
|
/// <ResourceDictionary.MergedDictionaries> /// <ui:ThemesDictionary Theme = "Dark" /> ///
|
|||
|
|
/// </ResourceDictionary.MergedDictionaries> /// </ResourceDictionary> ///
|
|||
|
|
/// </Application.Resources> /// </Application> ///</code>
|
|||
|
|
/// </example>
|
|||
|
|
[Localizability(LocalizationCategory.Ignore)]
|
|||
|
|
[Ambient]
|
|||
|
|
[UsableDuringInitialization(true)]
|
|||
|
|
public class ThemesDictionary : ResourceDictionary
|
|||
|
|
{
|
|||
|
|
public ThemesDictionary() { SetSourceBasedOnSelectedTheme(ApplicationTheme.Light); }
|
|||
|
|
|
|||
|
|
private void SetSourceBasedOnSelectedTheme(ApplicationTheme? selectedApplicationTheme)
|
|||
|
|
{
|
|||
|
|
var themeName = selectedApplicationTheme switch
|
|||
|
|
{
|
|||
|
|
ApplicationTheme.Dark => "Dark",
|
|||
|
|
ApplicationTheme.HighContrast => "HighContrast",
|
|||
|
|
_ => "Light",
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
Source = new Uri($"{ApplicationThemeManager.ThemesDictionaryPath}{themeName}.xaml", UriKind.Absolute);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Sets the default application theme.
|
|||
|
|
/// </summary>
|
|||
|
|
public ApplicationTheme Theme { set => SetSourceBasedOnSelectedTheme(value); }
|
|||
|
|
}
|