using System; using Avalonia.Controls; using Avalonia.Controls.Primitives; using Avalonia.Input; using Avalonia.Markup.Xaml; using Avalonia.ReactiveUI; using Microsoft.Extensions.Logging; using MyAvaloniaApp.ViewModels; namespace MyAvaloniaApp; public partial class MainWindow : ReactiveWindow { private readonly ILogger? _logger; /// /// 无参构造函数,用于 XAML 设计器 /// public MainWindow() { InitializeComponent(); SetupWindowControls(); } /// /// 构造函数,接受依赖注入的 ViewModel /// /// 主窗口的 ViewModel /// 日志记录器 public MainWindow(AppViewModel appViewModel, ILogger? logger = null) { ArgumentNullException.ThrowIfNull(appViewModel); _logger = logger; InitializeComponent(); ViewModel = appViewModel; DataContext = appViewModel.MainWindowViewModel; SetupWindowControls(); _logger?.LogInformation("MainWindow 已创建,ViewModel 已设置"); } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); } /// /// 设置窗口控制按钮事件 /// private void SetupWindowControls() { // 设置标题栏拖动功能 var titleBarGrid = this.FindControl("TitleBarGrid"); if (titleBarGrid != null) { titleBarGrid.PointerPressed += OnTitleBarPointerPressed; } // 最小化按钮 var minimizeButton = this.FindControl