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);
}
}
}