using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Avalonia.Controls; using Avalonia.Controls.Templates; using Avalonia.Metadata; using StabilityMatrix.Core.Models; namespace StabilityMatrix.Avalonia.Controls; [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class LaunchOptionCardTemplateSelector : IDataTemplate { // public bool SupportsRecycling => false; // ReSharper disable once CollectionNeverUpdated.Global [Content] public Dictionary Templates { get; } = new(); // Check if we can accept the provided data public bool Match(object? data) { return data is LaunchOptionCard; } // Build the DataTemplate here public Control Build(object? data) { if (data is not LaunchOptionCard card) throw new ArgumentException(null, nameof(data)); return Templates[card.Type].Build(card)!; } }