using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Irihi.Avalonia.Shared.Helpers; namespace Ursa.Controls; [TemplatePart(PART_CloseButton, typeof (Button))] [TemplatePart(PART_RestoreButton, typeof (Button))] [TemplatePart(PART_MinimizeButton, typeof (Button))] [TemplatePart(PART_FullScreenButton, typeof (Button))] [PseudoClasses(":minimized", ":normal", ":maximized", ":fullscreen")] public class CaptionButtons: Avalonia.Controls.Chrome.CaptionButtons { private const string PART_CloseButton = "PART_CloseButton"; private const string PART_RestoreButton = "PART_RestoreButton"; private const string PART_MinimizeButton = "PART_MinimizeButton"; private const string PART_FullScreenButton = "PART_FullScreenButton"; private Button? _closeButton; private Button? _restoreButton; private Button? _minimizeButton; private Button? _fullScreenButton; private IDisposable? _windowStateSubscription; private IDisposable? _fullScreenSubscription; private IDisposable? _minimizeSubscription; private IDisposable? _restoreSubscription; private IDisposable? _closeSubscription; /// /// 切换进入全屏前 窗口的状态 /// private WindowState? _oldWindowState; protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { _closeButton = e.NameScope.Get