ContentTemplateSelector.cs
1 // Copyright (c) Microsoft Corporation 2 // The Microsoft Corporation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using Microsoft.CmdPal.Core.ViewModels; 6 using Microsoft.CmdPal.UI.ViewModels; 7 using Microsoft.UI.Xaml; 8 using Microsoft.UI.Xaml.Controls; 9 10 namespace Microsoft.CmdPal.UI; 11 12 public partial class ContentTemplateSelector : DataTemplateSelector 13 { 14 // Define the (currently empty) data templates to return 15 // These will be "filled-in" in the XAML code. 16 public DataTemplate? FormTemplate { get; set; } 17 18 public DataTemplate? MarkdownTemplate { get; set; } 19 20 public DataTemplate? TreeTemplate { get; set; } 21 22 protected override DataTemplate? SelectTemplateCore(object item) 23 { 24 return item is ContentViewModel element 25 ? element switch 26 { 27 ContentFormViewModel => FormTemplate, 28 ContentMarkdownViewModel => MarkdownTemplate, 29 ContentTreeViewModel => TreeTemplate, 30 _ => null, 31 } 32 : null; 33 } 34 }