using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; using Avalonia.Styling; using Irihi.Avalonia.Shared.Helpers; namespace Ursa.Controls; [TemplatePart(PART_ThemeButton, typeof(Button))] [PseudoClasses(PC_Dark, PC_Light, PC_Default)] public class ThemeToggleButton: ThemeSelectorBase { public const string PART_ThemeButton = "PART_ThemeButton"; public const string PC_Light = ":light"; public const string PC_Dark = ":dark"; public const string PC_Default = ":default"; private Button? _button; private bool? _state; public static readonly StyledProperty IsThreeStateProperty = AvaloniaProperty.Register( nameof(IsThreeState)); public bool IsThreeState { get => GetValue(IsThreeStateProperty); set => SetValue(IsThreeStateProperty, value); } protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); Button.ClickEvent.RemoveHandler(OnButtonClicked, _button); _button = e.NameScope.Get