// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using Microsoft.CmdPal.UI.ViewModels; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; namespace Microsoft.CmdPal.UI; internal sealed partial class GridItemTemplateSelector : DataTemplateSelector { public IGridPropertiesViewModel? GridProperties { get; set; } public DataTemplate? Small { get; set; } public DataTemplate? Medium { get; set; } public DataTemplate? Gallery { get; set; } public DataTemplate? Section { get; set; } public DataTemplate? Separator { get; set; } protected override DataTemplate? SelectTemplateCore(object item, DependencyObject dependencyObject) { if (item is not ListItemViewModel element) { return Medium; } switch (element.Type) { case ListItemType.Separator: return Separator; case ListItemType.SectionHeader: return Section; default: break; } return GridProperties switch { SmallGridPropertiesViewModel => Small, MediumGridPropertiesViewModel => Medium, GalleryGridPropertiesViewModel => Gallery, _ => Medium, }; } }