From 674ca83ba9243a9e95a7568c797668dab6aee26a Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:35:25 -0300 Subject: feat: upload files --- .../EnumBindingSourceExtension.cs | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Gestor.Common/Gestor.Common.Helpers/EnumBindingSourceExtension.cs (limited to 'Gestor.Common/Gestor.Common.Helpers/EnumBindingSourceExtension.cs') diff --git a/Gestor.Common/Gestor.Common.Helpers/EnumBindingSourceExtension.cs b/Gestor.Common/Gestor.Common.Helpers/EnumBindingSourceExtension.cs new file mode 100644 index 0000000..7ce699e --- /dev/null +++ b/Gestor.Common/Gestor.Common.Helpers/EnumBindingSourceExtension.cs @@ -0,0 +1,59 @@ +using System; +using System.Windows.Markup; + +namespace Gestor.Common.Helpers +{ + public class EnumBindingSourceExtension : MarkupExtension + { + private Type _enumType; + + public Type EnumType + { + get + { + return this._enumType; + } + set + { + if (value == this._enumType) + { + return; + } + if (null != value) + { + if (!(Nullable.GetUnderlyingType(value) ?? value).IsEnum) + { + throw new ArgumentException("Type must be for an Enum."); + } + } + this._enumType = value; + } + } + + public EnumBindingSourceExtension() + { + } + + public EnumBindingSourceExtension(Type enumType) + { + this.EnumType = enumType; + } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + if (null == this._enumType) + { + throw new InvalidOperationException("The EnumType must be specified."); + } + Type underlyingType = Nullable.GetUnderlyingType(this._enumType) ?? this._enumType; + Array values = Enum.GetValues(underlyingType); + if (underlyingType == this._enumType) + { + return values; + } + Array arrays = Array.CreateInstance(underlyingType, values.Length + 1); + values.CopyTo(arrays, 1); + return arrays; + } + } +} \ No newline at end of file -- cgit v1.2.3