using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Data; namespace FWindSoft.Wpf { public class EnumToTComboxItemConvert : IValueConverter { public static EnumToTComboxItemConvert Instance = new EnumToTComboxItemConvert(); public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Type sourceType = value.GetType(); if (!sourceType.IsEnum) return value; var enumerable = parameter as IEnumerable; if (enumerable == null) return value; var comboxItems = enumerable.OfType(); return comboxItems.FirstOrDefault(i => System.Convert.ChangeType(i.Value, sourceType).Equals(System.Convert.ChangeType(value, sourceType))); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { TComboxItem item = value as TComboxItem; if (item == null) return value; return System.Convert.ChangeType(item.Value, targetType); } } }