using Avalonia.Controls; using Avalonia.VisualTree; using YZWater.Avalonia.Controls; namespace YZWater.Avalonia.Views; public partial class ViewEView : UserControl { public ViewEView() { InitializeComponent(); AttachedToVisualTree += (_, _) => { // 遍历视觉树设置背景 foreach (var v in this.GetVisualDescendants()) { if (v is Border b) { if (b.Name == "TitleBar") b.Background = ThemeHelper.HeaderBg; else if (b.Name == "StatusBar") b.Background = ThemeHelper.NavBg; else if (b.Name == "RootBorder") b.Background = ThemeHelper.AppBg; } else if (v is TextBlock tb) { if (tb.Name == "TitleText") tb.Foreground = ThemeHelper.HeaderText; else if (tb.Name == "SubtitleText") tb.Foreground = ThemeHelper.HeaderSubtext; } } ThemeHelper.ThemeChanged += ApplyTheme; }; DetachedFromVisualTree += (_, _) => ThemeHelper.ThemeChanged -= ApplyTheme; } private void ApplyTheme() { foreach (var v in this.GetVisualDescendants()) { if (v is Border b) { if (b.Name == "TitleBar") b.Background = ThemeHelper.HeaderBg; else if (b.Name == "StatusBar") b.Background = ThemeHelper.NavBg; else if (b.Name == "RootBorder") b.Background = ThemeHelper.AppBg; } else if (v is TextBlock tb) { if (tb.Name == "TitleText") tb.Foreground = ThemeHelper.HeaderText; else if (tb.Name == "SubtitleText") tb.Foreground = ThemeHelper.HeaderSubtext; } } } }