using System; using System.ComponentModel; using System.Globalization; using System.Linq; using System.Reflection; using System.Windows.Data; namespace Gestor.Common.Converters; public class ObjectToStringConverter : IValueConverter { public static readonly ObjectToStringConverter Instance = new ObjectToStringConverter(); public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is Enum @enum) { MemberInfo[] member = @enum.GetType().GetMember(@enum.ToString()); if (member.Length == 0) { return @enum.ToString(); } object[] customAttributes = member[0].GetCustomAttributes(typeof(DescriptionAttribute), inherit: false); if (!customAttributes.Any()) { return @enum.ToString().Trim(); } return ((DescriptionAttribute)customAttributes.ElementAt(0)).Description.Trim(); } if (value is DateTime dateTime) { return dateTime.ToShortDateString(); } return value?.ToString(); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; } }