-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathToolkitSampleNumericOptionMetadataViewModel.cs
101 lines (88 loc) · 2.91 KB
/
ToolkitSampleNumericOptionMetadataViewModel.cs
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// 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.Attributes;
namespace CommunityToolkit.Tooling.SampleGen.Metadata;
/// <summary>
/// An INPC-enabled metadata container for data defined in an <see cref="ToolkitSampleNumericOptionAttribute"/>.
/// </summary>
public class ToolkitSampleNumericOptionMetadataViewModel : IGeneratedToolkitSampleOptionViewModel
{
private string? _title;
private object _value;
/// <summary>
/// Creates a new instance of <see cref="ToolkitSampleNumericOptionMetadataViewModel"/>.
/// </summary>
public ToolkitSampleNumericOptionMetadataViewModel(string name, double initial = 0, double min = 0, double max = 10, double step = 1, bool showAsNumberBox = false, string? title = null)
{
Name = name;
_title = title;
_value = initial;
Max = max;
Min = min;
Step = step;
ShowAsNumberBox = showAsNumberBox;
}
/// <inheritdoc cref="INotifyPropertyChanged.PropertyChanged"/>
public event PropertyChangedEventHandler? PropertyChanged;
/// <summary>
/// A unique identifier for this option.
/// </summary>
/// <remarks>
/// Used by the sample system to match up <see cref="ToolkitSampleNumericOptionMetadataViewModel"/> to the original <see cref="ToolkitSampleNumericOptionAttribute"/> and the control that declared it.
/// </remarks>
public string Name { get; }
/// <summary>
/// The available options presented to the user.
/// </summary>
/// <summary>
/// The initial double value.
/// </summary>
public double Initial
{
get => (double)_value;
set
{
_value = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(Name));
}
}
/// <inheritdoc/>
public object? Value
{
get => Initial;
set
{
Initial = (double)(value ?? 0.0);
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(Name));
}
}
/// <summary>
/// The Minimum value of the slider.
/// </summary>
public double Min { get; }
/// <summary>
/// The Maximum value of the slider.
/// </summary>
public double Max { get; }
/// <summary>
/// The StepFrequency value of the slider.
/// </summary>
public double Step { get; }
/// <summary>
/// Determines if a Slider or NumberBox is shown.
/// </summary>
public bool ShowAsNumberBox { get; }
/// <summary>
/// A label to display along the slider.
/// </summary>
public string? Title
{
get => _title;
set
{
_title = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Title)));
}
}
}