ThemeService.cs 767 B

12345678910111213141516171819202122232425262728293031
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. namespace YZWater.Core.Services;
  3. /// <summary>
  4. /// 涓婚鍒囨崲鏈嶅姟锛堢函鐘舵佺鐞嗭紝涓嶄緷璧 Avalonia锛
  5. /// </summary>
  6. public partial class ThemeService : ObservableObject
  7. {
  8. private static ThemeService? _instance;
  9. public static ThemeService Instance => _instance ??= new ThemeService();
  10. [ObservableProperty]
  11. private bool _isDarkTheme = true;
  12. /// <summary>
  13. /// 涓婚鍙樻洿浜嬩欢锛堢敱 App.axaml.cs 璁㈤槄鎵ц瀹為檯鍒囨崲锛
  14. /// </summary>
  15. public event Action? ThemeChanged;
  16. private ThemeService() { }
  17. /// <summary>
  18. /// 鍒囨崲涓婚
  19. /// </summary>
  20. public void ToggleTheme()
  21. {
  22. IsDarkTheme = !IsDarkTheme;
  23. ThemeChanged?.Invoke();
  24. }
  25. }