Files
Pilz/Pilz.UI.AvaloniaUI/Dialogs/AvaloniaDialogBase.Statics.cs

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;
}
}