summaryrefslogtreecommitdiff
path: root/Gestor.Common/Gestor.Common.Converters/ObjectToStringConverter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Gestor.Common/Gestor.Common.Converters/ObjectToStringConverter.cs')
-rw-r--r--Gestor.Common/Gestor.Common.Converters/ObjectToStringConverter.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/Gestor.Common/Gestor.Common.Converters/ObjectToStringConverter.cs b/Gestor.Common/Gestor.Common.Converters/ObjectToStringConverter.cs
new file mode 100644
index 0000000..2748ce0
--- /dev/null
+++ b/Gestor.Common/Gestor.Common.Converters/ObjectToStringConverter.cs
@@ -0,0 +1,41 @@
+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;
+ }
+}