using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using Avalonia.Platform.Storage; namespace LanMountainDesktop.Launcher.Views; /// /// 错误窗口 - 显示启动失败信息,支持调试模式(隐藏入口) /// public partial class ErrorWindow : Window { private readonly TaskCompletionSource _completionSource = new(); private int _iconClickCount = 0; private const int DebugModeClickThreshold = 5; private bool _isDebugMode = false; private string? _customHostPath; private bool _devModeEnabled; public ErrorWindow() { AvaloniaXamlLoader.Load(this); // 先加载保存的状态 _devModeEnabled = LoadDevModeStateInternal(); _customHostPath = LoadCustomHostPathInternal(); // 延迟到窗口加载完成后再初始化组件,确保视觉树已准备好 this.Loaded += OnWindowLoaded; this.Opened += OnWindowOpened; } /// /// 窗口加载完成事件 - 视觉树已准备好 /// private void OnWindowLoaded(object? sender, RoutedEventArgs e) { Console.WriteLine("[ErrorWindow] Window loaded, initializing components..."); InitializeComponents(); } /// /// 窗口打开事件 /// private void OnWindowOpened(object? sender, EventArgs e) { Console.WriteLine("[ErrorWindow] Window opened and visible"); } private void InitializeComponents() { Console.WriteLine("[ErrorWindow] Initializing components..."); // 错误图标点击事件(进入调试模式 - 隐藏功能) var errorIconBorder = this.FindControl("ErrorIconBorder"); if (errorIconBorder is not null) { errorIconBorder.PointerPressed += OnErrorIconClick; Console.WriteLine("[ErrorWindow] ErrorIconBorder event bound successfully"); } else { Console.Error.WriteLine("[ErrorWindow] Failed to find ErrorIconBorder!"); } // 按钮事件 var retryButton = this.FindControl