38 lines
871 B
C#

using Avalonia;
using Avalonia.Controls;
using System;
namespace LibationWinForms.AvaloniaUI.Views.Dialogs
{
public abstract class DialogWindow : Window
{
public Control ControlToFocusOnShow { get; set; }
public DialogWindow()
{
this.HideMinMaxBtns();
this.KeyDown += DialogWindow_KeyDown;
this.Opened += DialogWindow_Opened;
#if DEBUG
this.AttachDevTools();
#endif
}
private void DialogWindow_Opened(object sender, EventArgs e)
{
ControlToFocusOnShow?.Focus();
}
protected virtual void SaveAndClose() => Close(DialogResult.OK);
protected virtual void CancelAndClose() => Close(DialogResult.Cancel);
private void DialogWindow_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
if (e.Key == Avalonia.Input.Key.Escape)
CancelAndClose();
else if (e.Key == Avalonia.Input.Key.Return)
SaveAndClose();
}
}
}