using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Input; using Avalonia.Interactivity; namespace Ursa.Controls; [TemplatePart(PART_CloseButton, typeof(Button))] public class DialogWindow: Window { public const string PART_CloseButton = "PART_CloseButton"; protected override Type StyleKeyOverride { get; } = typeof(DialogWindow); private Button? _closeButton; protected override void OnDataContextBeginUpdate() { base.OnDataContextBeginUpdate(); if (DataContext is IDialogContext context) { context.Closed-= OnDialogClose; } } protected override void OnDataContextEndUpdate() { base.OnDataContextEndUpdate(); if (DataContext is IDialogContext context) { context.Closed += OnDialogClose; } } protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); _closeButton = e.NameScope.Find