using Avalonia.Controls; namespace Pilz.UI.AvaloniaUI.Dialogs; public partial class AvaloniaDialogBase { public static T Show(string? title, object? icon, object? tag = null) where T : AvaloniaFlyoutBase { return Show(AvaloniaFlyoutBase.CreatePanelInstance(tag), title, icon); } public static Task ShowDialog(Window parent, string? title, object? icon, object? tag = null) where T : AvaloniaFlyoutBase { return ShowDialog(AvaloniaFlyoutBase.CreatePanelInstance(tag), parent, title, icon); } public static T Show(T dialogPanel, string? title, object? icon) where T : AvaloniaFlyoutBase { CreateForm(dialogPanel, title, icon, WindowStartupLocation.CenterScreen).Show(); return dialogPanel; } public static async Task ShowDialog(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 dialogPanel, string? title, object? icon, WindowStartupLocation startPosition) where T : AvaloniaFlyoutBase { var dialog = new AvaloniaDialogBase { Title = title, Icon = icon as WindowIcon, WindowStartupLocation = startPosition, }; dialog.SetContent(dialogPanel); return dialog; } }