feat: use another datatemplate collection.

This commit is contained in:
rabbitism
2024-02-02 00:27:46 +08:00
parent 8f4d88b87f
commit 1d01022a03
3 changed files with 39 additions and 8 deletions

View File

@@ -19,6 +19,9 @@ public class OverlayDialogHost : Canvas
private Point _lastPoint;
public DataTemplates DialogDataTemplates { get; set; } = new DataTemplates();
public static readonly StyledProperty<IBrush?> OverlayMaskBrushProperty =
AvaloniaProperty.Register<OverlayDialogHost, IBrush?>(
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<IDataTemplate>();
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;
}
}