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 readonly static ObjectToStringConverter Instance; static ObjectToStringConverter() { ObjectToStringConverter.Instance = new ObjectToStringConverter(); } public ObjectToStringConverter() { } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { Enum @enum = value as Enum; if (@enum == null) { if (value is DateTime) { return ((DateTime)value).ToShortDateString(); } if (value == null) { return null; } return value.ToString(); } MemberInfo[] member = @enum.GetType().GetMember(@enum.ToString()); if (member.Length == 0) { return @enum.ToString(); } object[] customAttributes = member[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (!customAttributes.Any()) { return @enum.ToString().Trim(); } return ((DescriptionAttribute)customAttributes.ElementAt(0)).Description.Trim(); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; } } }