using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; using Ursa.Common; namespace Ursa.Controls; [TemplatePart(PART_YesButton, typeof(Button))] [TemplatePart(PART_NoButton, typeof(Button))] [TemplatePart(PART_OKButton, typeof(Button))] [TemplatePart(PART_CancelButton, typeof(Button))] public class DefaultDialogWindow: DialogWindow { protected override Type StyleKeyOverride { get; } = typeof(DefaultDialogWindow); 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 Button? _yesButton; private Button? _noButton; private Button? _okButton; private Button? _cancelButton; public static readonly StyledProperty ButtonsProperty = AvaloniaProperty.Register( nameof(Buttons)); public DialogButton Buttons { get => GetValue(ButtonsProperty); set => SetValue(ButtonsProperty, value); } public static readonly StyledProperty ModeProperty = AvaloniaProperty.Register( nameof(Mode)); public DialogMode Mode { get => GetValue(ModeProperty); set => SetValue(ModeProperty, value); } protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); EventHelper.UnregisterClickEvent(OnDefaultClose, _okButton, _cancelButton, _yesButton, _noButton); _okButton = e.NameScope.Find