Files
Toolkit2/Framework/Avalonia/Contents/ContentTemplateSelector.cs
T
2022-12-17 17:58:42 +00:00

41 lines
973 B
C#

using Avalonia.Controls;
using Avalonia.Controls.Templates;
using Toolkit.Framework.Foundation;
namespace Toolkit.Framework.Avalonia;
public class ContentTemplateSelector : IDataTemplate, IContentTemplateSelector
{
private readonly Dictionary<object, IControl> dataTracking = new();
private readonly IContentTemplateFactory templateFactory;
public ContentTemplateSelector(IContentTemplateFactory templateFactory)
{
this.templateFactory = templateFactory;
}
public IControl? Build(object? content)
{
if (content is not null)
{
if (dataTracking.TryGetValue(content, out IControl? control))
{
return control;
}
else
{
control = (IControl?)templateFactory.Create(content);
}
return control;
}
return null;
}
public bool Match(object? data)
{
return true;
}
}