EnumDescriptionConverter.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. using System;
  2. using System.ComponentModel;
  3. using System.Globalization;
  4. using System.Windows.Data;
  5. namespace TeamAAS.Feeder.UI
  6. {
  7. /// <summary>
  8. /// 枚举值 → 其 [Description] 特性文本(无特性则用枚举名)。
  9. /// 库内自带副本:主程序的 TeamAAS.Converters.EnumDescriptionConverter 在 exe 程序集,硬件库无法反向引用。
  10. /// </summary>
  11. public class EnumDescriptionConverter : IValueConverter
  12. {
  13. public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  14. {
  15. if (value == null) return string.Empty;
  16. var type = value.GetType();
  17. var name = Enum.GetName(type, value);
  18. if (name == null) return value.ToString();
  19. var fi = type.GetField(name);
  20. var attr = fi != null
  21. ? (DescriptionAttribute)Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute))
  22. : null;
  23. return attr != null ? attr.Description : name;
  24. }
  25. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  26. {
  27. throw new NotSupportedException();
  28. }
  29. }
  30. }