using CommunityToolkit.Diagnostics; using StrixMusic.Shared.ViewModels; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace StrixMusic.Shared.TemplateSelectors { /// /// Selects the template for a service item. /// public class ServicesItemTemplateSelector : DataTemplateSelector { /// /// The template to display for an item that triggers creating a new core. /// public DataTemplate? NewItemTemplate { get; set; } /// /// The template to display for a loaded core. /// public DataTemplate? CoreItemTemplate { get; set; } /// protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { if (!(item is LoadedServicesItemViewModel settingsVm)) return base.SelectTemplateCore(item, container); Guard.IsNotNull(NewItemTemplate, nameof(NewItemTemplate)); Guard.IsNotNull(CoreItemTemplate, nameof(CoreItemTemplate)); return settingsVm.IsAddItem ? NewItemTemplate : CoreItemTemplate; } } }