using Avalonia.Controls; using Avalonia.VisualTree; using YZWater.Avalonia.Controls; namespace YZWater.Avalonia.Views; public partial class ViewBView : UserControl { public ViewBView() { InitializeComponent(); AttachedToVisualTree += (_, _) => { ApplyTheme(); ThemeHelper.ThemeChanged += ApplyTheme; }; DetachedFromVisualTree += (_, _) => { ThemeHelper.ThemeChanged -= ApplyTheme; }; } private void ApplyTheme() { foreach (var visual in this.GetVisualDescendants()) { if (visual is Border border && border.Name == "TitleBar") border.Background = ThemeHelper.HeaderBg; else if (visual is Border sb && sb.Name == "StatusBar") sb.Background = ThemeHelper.NavBg; else if (visual is Border rb && rb.Name == "RootBorder") rb.Background = ThemeHelper.AppBg; else if (visual is TextBlock tb && tb.Name == "TitleText") tb.Foreground = ThemeHelper.HeaderText; else if (visual is TextBlock stb && stb.Name == "SubtitleText") stb.Foreground = ThemeHelper.HeaderSubtext; } } }