feat: add extra overloads for prism usage.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using Avalonia.Controls;
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
using Ursa.Common;
|
using Ursa.Common;
|
||||||
using Ursa.Controls.Options;
|
using Ursa.Controls.Options;
|
||||||
|
|
||||||
@@ -6,11 +7,11 @@ namespace Ursa.Controls;
|
|||||||
|
|
||||||
public static class Drawer
|
public static class Drawer
|
||||||
{
|
{
|
||||||
public static Task<DialogResult?> Show<TView, TViewModel>(TViewModel vm, string? hostId = null, DefaultDrawerOptions? options = null)
|
public static Task<DialogResult> Show<TView, TViewModel>(TViewModel vm, string? hostId = null, DefaultDrawerOptions? options = null)
|
||||||
where TView: Control, new()
|
where TView: Control, new()
|
||||||
{
|
{
|
||||||
var host = OverlayDialogManager.GetHost(hostId);
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
if (host is null) return Task.FromResult(default(DialogResult?));
|
if (host is null) return Task.FromResult(default(DialogResult));
|
||||||
var drawer = new DefaultDrawerControl()
|
var drawer = new DefaultDrawerControl()
|
||||||
{
|
{
|
||||||
Content = new TView(),
|
Content = new TView(),
|
||||||
@@ -18,7 +19,39 @@ public static class Drawer
|
|||||||
};
|
};
|
||||||
ConfigureDefaultDrawer(drawer, options);
|
ConfigureDefaultDrawer(drawer, options);
|
||||||
host.AddDrawer(drawer);
|
host.AddDrawer(drawer);
|
||||||
return drawer.ShowAsync<DialogResult?>();
|
return drawer.ShowAsync<DialogResult>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<DialogResult> Show(Control control, object? vm, string? hostId = null,
|
||||||
|
DefaultDrawerOptions? options = null)
|
||||||
|
{
|
||||||
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
|
if (host is null) return Task.FromResult(default(DialogResult));
|
||||||
|
var drawer = new DefaultDrawerControl()
|
||||||
|
{
|
||||||
|
Content = control,
|
||||||
|
DataContext = vm,
|
||||||
|
};
|
||||||
|
ConfigureDefaultDrawer(drawer, options);
|
||||||
|
host.AddDrawer(drawer);
|
||||||
|
return drawer.ShowAsync<DialogResult>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<DialogResult> Show(object? vm, string? hostId = null, DefaultDrawerOptions? options = null)
|
||||||
|
{
|
||||||
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
|
if (host is null) return Task.FromResult(default(DialogResult));
|
||||||
|
var view = host.GetDataTemplate(vm)?.Build(vm);
|
||||||
|
if (view is null) view = new ContentControl() { Padding = new Thickness(24) };
|
||||||
|
view.DataContext = vm;
|
||||||
|
var drawer = new DefaultDrawerControl()
|
||||||
|
{
|
||||||
|
Content = view,
|
||||||
|
DataContext = vm,
|
||||||
|
};
|
||||||
|
ConfigureDefaultDrawer(drawer, options);
|
||||||
|
host.AddDrawer(drawer);
|
||||||
|
return drawer.ShowAsync<DialogResult>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Task<TResult?> ShowCustom<TView, TViewModel, TResult>(TViewModel vm, string? hostId = null, CustomDrawerOptions? options = null)
|
public static Task<TResult?> ShowCustom<TView, TViewModel, TResult>(TViewModel vm, string? hostId = null, CustomDrawerOptions? options = null)
|
||||||
@@ -36,6 +69,38 @@ public static class Drawer
|
|||||||
return dialog.ShowAsync<TResult>();
|
return dialog.ShowAsync<TResult>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Task<TResult?> ShowCustom<TResult>(Control control, object? vm, string? hostId = null, CustomDrawerOptions? options = null)
|
||||||
|
{
|
||||||
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
|
if (host is null) return Task.FromResult(default(TResult));
|
||||||
|
var dialog = new CustomDrawerControl()
|
||||||
|
{
|
||||||
|
Content = control,
|
||||||
|
DataContext = vm,
|
||||||
|
};
|
||||||
|
ConfigureCustomDrawer(dialog, options);
|
||||||
|
host.AddDrawer(dialog);
|
||||||
|
return dialog.ShowAsync<TResult>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TResult?> ShowCustom<TResult>(object? vm, string? hostId = null, CustomDrawerOptions? options = null)
|
||||||
|
{
|
||||||
|
var host = OverlayDialogManager.GetHost(hostId);
|
||||||
|
if (host is null) return Task.FromResult(default(TResult));
|
||||||
|
var view = host.GetDataTemplate(vm)?.Build(vm);
|
||||||
|
if (view is null) view = new ContentControl() { Padding = new Thickness(24) };
|
||||||
|
view.DataContext = vm;
|
||||||
|
var dialog = new CustomDrawerControl()
|
||||||
|
{
|
||||||
|
Content = view,
|
||||||
|
DataContext = vm,
|
||||||
|
};
|
||||||
|
ConfigureCustomDrawer(dialog, options);
|
||||||
|
host.AddDrawer(dialog);
|
||||||
|
return dialog.ShowAsync<TResult>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void ConfigureCustomDrawer(CustomDrawerControl drawer, CustomDrawerOptions? options)
|
private static void ConfigureCustomDrawer(CustomDrawerControl drawer, CustomDrawerOptions? options)
|
||||||
{
|
{
|
||||||
options ??= CustomDrawerOptions.Default;
|
options ??= CustomDrawerOptions.Default;
|
||||||
|
|||||||
Reference in New Issue
Block a user