using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Platform; namespace Ursa.Controls; [TemplatePart(PART_CloseButton, typeof(Button))] [TemplatePart(PART_NoButton, typeof(Button))] [TemplatePart(PART_OKButton, typeof(Button))] [TemplatePart(PART_CancelButton, typeof(Button))] [TemplatePart(PART_YesButton, typeof(Button))] public class MessageBoxWindow : Window { public const string PART_CloseButton = "PART_CloseButton"; public const string PART_YesButton = "PART_YesButton"; public const string PART_NoButton = "PART_NoButton"; public const string PART_OKButton = "PART_OKButton"; public const string PART_CancelButton = "PART_CancelButton"; private MessageBoxButton _buttonConfigs; private Button? _closeButton; private Button? _yesButton; private Button? _noButton; private Button? _okButton; private Button? _cancelButton; protected override Type StyleKeyOverride => typeof(MessageBoxWindow); public static readonly StyledProperty MessageIconProperty = AvaloniaProperty.Register( nameof(MessageIcon)); public MessageBoxIcon MessageIcon { get => GetValue(MessageIconProperty); set => SetValue(MessageIconProperty, value); } public MessageBoxWindow() { _buttonConfigs = MessageBoxButton.OK; } public MessageBoxWindow(MessageBoxButton buttons) { _buttonConfigs = buttons; } protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); if (_closeButton != null) { _closeButton.Click -= OnCloseButtonClick; } if (_yesButton != null) { _yesButton.Click -= OnYesButtonClick; } if (_noButton != null) { _noButton.Click -= OnNoButtonClick; } if (_okButton != null) { _okButton.Click -= OnOKButtonClick; } if (_cancelButton != null) { _cancelButton.Click -= OnCancelButtonClick; } _yesButton = e.NameScope.Find