using System.ComponentModel; using PropertyChanged.SourceGenerator; namespace FileTime.Core.Interactions; public partial class OptionsInputElement : InputElementBase, IOptionsInputElement, INotifyPropertyChanged { public IReadOnlyCollection> Options { get; } [Notify] private T? _value; IReadOnlyCollection IOptionsInputElement.Options => Options; object? IOptionsInputElement.Value { get => Options.FirstOrDefault(o => o.Value?.Equals(_value) ?? false); set { if (value is T newValue) { Value = newValue; } else if (value is OptionElement optionElement) { Value = optionElement.Value; } } } public OptionsInputElement(string label, IEnumerable> options) : base(label, InputType.Options) { Options = options.ToList(); } }