| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 
							- using System;
 
- using System.ComponentModel;
 
- using System.Linq;
 
- using System.Windows.Markup;
 
- using InABox.Core;
 
- namespace InABox.WPF;
 
- public class EnumFormatterExtension : MarkupExtension
 
- {
 
-     private readonly Type _type;
 
-     public EnumFormatterExtension(Type type)
 
-     {
 
-         _type = type;
 
-     }
 
-     public override object ProvideValue(IServiceProvider serviceProvider)
 
-     {
 
-         return Enum.GetValues(_type)
 
-             .Cast<object>()
 
-             .Select(e => new { Value = (int)e, DisplayName = $"{e}".SplitCamelCase() });
 
-     }
 
- }
 
- public class EnumToStringConverter : AbstractConverter<object?,string>
 
- {
 
-     private string GetDescription(Type enumType, object? enumValue)
 
-     {
 
-         if (enumValue == null)
 
-             return string.Empty;
 
-         return
 
-             enumType
 
-                 .GetField($"{enumValue}")?
 
-                 .GetCustomAttributes(typeof(DescriptionAttribute), false)
 
-                 .FirstOrDefault() is DescriptionAttribute _descriptionAttribute
 
-                 ? _descriptionAttribute.Description
 
-                 : $"{enumValue}".SplitCamelCase() ?? "";
 
-     }
 
-     public override string Convert(object? value)
 
-     {
 
-         if (value == null)
 
-             return String.Empty;
 
-         Type _type = value.GetType();
 
-         return
 
-             _type.IsEnum
 
-                 ? GetDescription(_type, value)
 
-                 : String.Empty;
 
-     }
 
- }
 
 
  |