How to use Theme Service

This topic explains how to use the ThemeService for runtime theme switching and persisting user theme preferences.

Step-by-step

  1. Register ThemeService: Add the ThemeService to your project's host builder configuration.

    public partial class App : Application
    {
        protected override void OnLaunched(LaunchActivatedEventArgs args)
        {
            var builder = this.CreateBuilder(args)
                .Configure(host => host
                    .UseThemeSwitching()
                );
        }
    }
    
  2. Consume ThemeService: Inject the ThemeService into your view models or other services where you need to manipulate the theme.

    public class SettingsViewModel
    {
        private readonly IThemeService _themeService;
        public SettingsViewModel(IThemeService themeService)
        {
            _themeService = themeService;
        }
        public async Task ToggleThemeAsync()
        {
            var currentTheme = _themeService.Theme;
            var newTheme = currentTheme == AppTheme.Dark ? AppTheme.Light : AppTheme.Dark;
            await _themeService.SetThemeAsync(newTheme);
        }
    }
    

Source Code

ThemeService Implementation