/ src / modules / cmdpal / Microsoft.CmdPal.UI / Converters / ContentTemplateSelector.cs
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  }