43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using Avalonia.Controls;
|
|
|
|
namespace Pilz.UI.AvaloniaUI.Dialogs;
|
|
|
|
public partial class AvaloniaDialogBase
|
|
{
|
|
public static int DefaultPadding { get; set; } = 3;
|
|
|
|
public static T Show<T>(string? title, object? icon, object? tag = null) where T : AvaloniaFlyoutBase
|
|
{
|
|
return Show(AvaloniaFlyoutBase.CreatePanelInstance<T>(tag), title, icon);
|
|
}
|
|
|
|
public static Task<T> ShowDialog<T>(Window parent, string? title, object? icon, object? tag = null) where T : AvaloniaFlyoutBase
|
|
{
|
|
return ShowDialog(AvaloniaFlyoutBase.CreatePanelInstance<T>(tag), parent, title, icon);
|
|
}
|
|
|
|
public static T Show<T>(T dialogPanel, string? title, object? icon) where T : AvaloniaFlyoutBase
|
|
{
|
|
CreateForm(dialogPanel, title, icon, WindowStartupLocation.CenterScreen).Show();
|
|
return dialogPanel;
|
|
}
|
|
|
|
public static async Task<T> ShowDialog<T>(T dialogPanel, Window parent, string? title, object? icon) where T : AvaloniaFlyoutBase
|
|
{
|
|
await CreateForm(dialogPanel, title, icon, WindowStartupLocation.CenterOwner).ShowDialog(parent);
|
|
return dialogPanel;
|
|
}
|
|
|
|
internal static AvaloniaDialogBase CreateForm<T>(T dialogPanel, string? title, object? icon, WindowStartupLocation startPosition) where T : AvaloniaFlyoutBase
|
|
{
|
|
var dialog = new AvaloniaDialogBase
|
|
{
|
|
Title = title,
|
|
Icon = icon as WindowIcon,
|
|
WindowStartupLocation = startPosition,
|
|
Padding = new(DefaultPadding),
|
|
};
|
|
dialog.SetContent(dialogPanel);
|
|
return dialog;
|
|
}
|
|
} |