using System; using System.ComponentModel; using System.Globalization; using System.Reflection; using System.Windows.Data; namespace Dominion.NET_WPF.Converters { public class VcLayoutStyleToString : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (string.IsNullOrEmpty(value.ToString())) // This is for databinding return LayoutStyle.Supply2Columns; return (StringToEnum(value.ToString())).ToDescription(); // <-- The extention method } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return string.IsNullOrEmpty(value.ToString()) ? LayoutStyle.Supply2Columns : StringToEnum(value.ToString()); } public static T StringToEnum(string name) { return (T)Enum.Parse(typeof(T), name); } } public class EnumDescriptionConverter : IValueConverter { private static string GetEnumDescription(Enum enumObj) { var fieldInfo = enumObj.GetType().GetField(enumObj.ToString()); var attribArray = fieldInfo.GetCustomAttributes(false); foreach (var attrib in attribArray) { var attribute = attrib as DescriptionAttribute; if (attribute != null) return attribute.Description; } return enumObj.ToString(); } object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture) { var myEnum = (Enum)value; var description = GetEnumDescription(myEnum); return description; } object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return string.Empty; } } }