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;
- }
- }
|