add Avalonia Dialogs
This commit is contained in:
47
Pilz.UI.AvaloniaUI/Dialogs/AvaloniaDialogBase.Statics.cs
Normal file
47
Pilz.UI.AvaloniaUI/Dialogs/AvaloniaDialogBase.Statics.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace Pilz.UI.AvaloniaUI.Dialogs;
|
||||
|
||||
public partial class AvaloniaDialogBase
|
||||
{
|
||||
public static T Show<T>(string? title, object? icon, object? tag = null) where T : AvaloniaFlyoutBase
|
||||
{
|
||||
return Show(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(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;
|
||||
}
|
||||
|
||||
private static T CreatePanelInstance<T>(object? tag) where T : AvaloniaFlyoutBase
|
||||
{
|
||||
var dialogPanel = Activator.CreateInstance<T>();
|
||||
dialogPanel.Tag = tag;
|
||||
return dialogPanel;
|
||||
}
|
||||
|
||||
private 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,
|
||||
};
|
||||
dialog.SetContent(dialogPanel);
|
||||
return dialog;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user