using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using OwlCore.AbstractUI.ViewModels; using CommunityToolkit.Diagnostics; using OwlCore.AbstractUI.Models; namespace OwlCore.WinUI.AbstractUI.Themes { /// /// Selects the template that is used for an based on the . /// public class AbstractDataListTypeTemplateSelector : DataTemplateSelector { /// /// The data template used to display an . /// public DataTemplate? GridTemplate { get; set; } /// /// The data template used to display an . /// public DataTemplate? ListTemplate { get; set; } /// protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { if (item is AbstractDataListViewModel viewModel) { return viewModel.PreferredDisplayMode switch { AbstractDataListPreferredDisplayMode.Grid => GridTemplate ?? ThrowHelper.ThrowArgumentNullException(), AbstractDataListPreferredDisplayMode.List => ListTemplate ?? ThrowHelper.ThrowArgumentNullException(), _ => throw new NotImplementedException(), }; } return base.SelectTemplateCore(item, container); } } }