feat: refactor OverlayDialog and add options.

This commit is contained in:
rabbitism
2024-02-02 00:01:18 +08:00
parent fb11be0169
commit 8f4d88b87f
8 changed files with 280 additions and 58 deletions

View File

@@ -1,6 +1,7 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Templates;
using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.Media;
@@ -220,4 +221,17 @@ public class OverlayDialogHost : Canvas
Canvas.SetLeft(control, left);
Canvas.SetTop(control, top);
}
internal IDataTemplate? GetDataTemplate(object? o)
{
if (o is null) return null;
IDataTemplate? result = null;
var templates = this.DataTemplates.ToList();
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<IDataTemplate>();
result = resources.FirstOrDefault(a => a.Match(o));
return result;
}
}