-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathGeneratedSampleOptionTemplateSelector.cs
More file actions
36 lines (28 loc) · 1.69 KB
/
GeneratedSampleOptionTemplateSelector.cs
File metadata and controls
36 lines (28 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using CommunityToolkit.Tooling.SampleGen.Metadata;
namespace CommunityToolkit.App.Shared.Renderers;
/// <summary>
/// Selects a sample option template for the provided <see cref="IGeneratedToolkitSampleOptionViewModel"/>.
/// </summary>
internal partial class GeneratedSampleOptionTemplateSelector : DataTemplateSelector
{
public DataTemplate? BoolOptionTemplate { get; set; }
public DataTemplate? MultiChoiceOptionTemplate { get; set; }
public DataTemplate? SliderOptionTemplate { get; set; }
public DataTemplate? NumberBoxOptionTemplate { get; set; }
public DataTemplate? TextOptionTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
return item switch
{
ToolkitSampleBoolOptionMetadataViewModel => BoolOptionTemplate ?? base.SelectTemplateCore(item, container),
ToolkitSampleMultiChoiceOptionMetadataViewModel => MultiChoiceOptionTemplate ?? base.SelectTemplateCore(item, container),
ToolkitSampleNumericOptionMetadataViewModel { ShowAsNumberBox: true } => NumberBoxOptionTemplate ?? base.SelectTemplateCore(item, container),
ToolkitSampleNumericOptionMetadataViewModel { ShowAsNumberBox: false } => SliderOptionTemplate ?? base.SelectTemplateCore(item, container),
ToolkitSampleTextOptionMetadataViewModel => TextOptionTemplate ?? base.SelectTemplateCore(item, container),
_ => base.SelectTemplateCore(item, container),
};
}
}