diff --git a/demo/Ursa.Demo/Pages/DialogDemo.axaml b/demo/Ursa.Demo/Pages/DialogDemo.axaml
index a760153..424de63 100644
--- a/demo/Ursa.Demo/Pages/DialogDemo.axaml
+++ b/demo/Ursa.Demo/Pages/DialogDemo.axaml
@@ -71,7 +71,13 @@
-
+
+
+
+
+
+
+
diff --git a/src/Ursa/Controls/Dialog/OverlayDialog.cs b/src/Ursa/Controls/Dialog/OverlayDialog.cs
index 323a169..7ae48e8 100644
--- a/src/Ursa/Controls/Dialog/OverlayDialog.cs
+++ b/src/Ursa/Controls/Dialog/OverlayDialog.cs
@@ -1,4 +1,5 @@
-using Avalonia.Controls;
+using Avalonia;
+using Avalonia.Controls;
using Ursa.Common;
namespace Ursa.Controls;
@@ -86,7 +87,7 @@ public static class OverlayDialog
var host = OverlayDialogManager.GetHost(hostId);
if (host is null) return;
var view = host.GetDataTemplate(vm)?.Build(vm);
- if (view is null) view = new ContentControl();
+ if (view is null) view = new ContentControl() { Padding = new Thickness(24) };
view.DataContext = vm;
var t = new DialogControl()
{
@@ -146,11 +147,26 @@ public static class OverlayDialog
public static Task ShowCustomModal(Control control, object? vm, string? hostId = null,
OverlayDialogOptions? options = null)
+ {
+ var host = OverlayDialogManager.GetHost(hostId);
+ if (host is null) return Task.FromResult(default(TResult));
+ var t = new DialogControl()
+ {
+ Content = control,
+ DataContext = vm,
+ };
+ ConfigureDialogControl(t, options);
+ host?.AddModalDialog(t);
+ return t.ShowAsync();
+ }
+
+ public static Task ShowCustomModal(object? vm, string? hostId = null,
+ OverlayDialogOptions? 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();
+ if (view is null) view = new ContentControl() { Padding = new Thickness(24) };
view.DataContext = vm;
var t = new DialogControl()
{
diff --git a/src/Ursa/Controls/Dialog/OverlayDialogHost.cs b/src/Ursa/Controls/Dialog/OverlayDialogHost.cs
index 522f14e..9c3e2c5 100644
--- a/src/Ursa/Controls/Dialog/OverlayDialogHost.cs
+++ b/src/Ursa/Controls/Dialog/OverlayDialogHost.cs
@@ -19,6 +19,9 @@ public class OverlayDialogHost : Canvas
private Point _lastPoint;
+
+ public DataTemplates DialogDataTemplates { get; set; } = new DataTemplates();
+
public static readonly StyledProperty OverlayMaskBrushProperty =
AvaloniaProperty.Register(
nameof(OverlayMaskBrush));
@@ -226,12 +229,18 @@ public class OverlayDialogHost : Canvas
{
if (o is null) return null;
IDataTemplate? result = null;
- var templates = this.DataTemplates.ToList();
+ var templates = this.DialogDataTemplates;
result = templates.FirstOrDefault(a => a.Match(o));
if (result != null) return result;
- var resources = this.Resources.Where(a => a.Value is IDataTemplate).Select(a => a.Value)
- .OfType();
- result = resources.FirstOrDefault(a => a.Match(o));
+ var keys = this.Resources.Keys;
+ foreach (var key in keys)
+ {
+ if (Resources.TryGetValue(key, out var value) && value is IDataTemplate t)
+ {
+ result = t;
+ break;
+ }
+ }
return result;
}
}
\ No newline at end of file