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 AbstractMultiChoiceTypeTemplateSelector : DataTemplateSelector
{
///
/// The data template used to display an .
///
public DataTemplate? ComboBoxTemplate { get; set; }
///
/// The data template used to display an .
///
public DataTemplate? RadioButtonTemplate { get; set; }
///
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
if (item is AbstractMultiChoiceViewModel viewModel)
{
return viewModel.PreferredDisplayMode switch
{
AbstractMultiChoicePreferredDisplayMode.Dropdown => ComboBoxTemplate ?? ThrowHelper.ThrowArgumentNullException(),
AbstractMultiChoicePreferredDisplayMode.RadioButtons => RadioButtonTemplate ?? ThrowHelper.ThrowArgumentNullException(),
_ => throw new NotImplementedException(),
};
}
return base.SelectTemplateCore(item, container);
}
}
}