ViewBView.axaml.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Avalonia.Controls;
  2. using Avalonia.VisualTree;
  3. using YZWater.Avalonia.Controls;
  4. namespace YZWater.Avalonia.Views;
  5. public partial class ViewBView : UserControl
  6. {
  7. public ViewBView()
  8. {
  9. InitializeComponent();
  10. AttachedToVisualTree += (_, _) =>
  11. {
  12. ApplyTheme();
  13. ThemeHelper.ThemeChanged += ApplyTheme;
  14. };
  15. DetachedFromVisualTree += (_, _) =>
  16. {
  17. ThemeHelper.ThemeChanged -= ApplyTheme;
  18. };
  19. }
  20. private void ApplyTheme()
  21. {
  22. foreach (var visual in this.GetVisualDescendants())
  23. {
  24. if (visual is Border border && border.Name == "TitleBar")
  25. border.Background = ThemeHelper.HeaderBg;
  26. else if (visual is Border sb && sb.Name == "StatusBar")
  27. sb.Background = ThemeHelper.NavBg;
  28. else if (visual is Border rb && rb.Name == "RootBorder")
  29. rb.Background = ThemeHelper.AppBg;
  30. else if (visual is TextBlock tb && tb.Name == "TitleText")
  31. tb.Foreground = ThemeHelper.HeaderText;
  32. else if (visual is TextBlock stb && stb.Name == "SubtitleText")
  33. stb.Foreground = ThemeHelper.HeaderSubtext;
  34. }
  35. }
  36. }