EnumToTComboxItemConvert.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Data;
  8. namespace FWindSoft.Wpf
  9. {
  10. public class EnumToTComboxItemConvert : IValueConverter
  11. {
  12. public static EnumToTComboxItemConvert Instance = new EnumToTComboxItemConvert();
  13. public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  14. {
  15. Type sourceType = value.GetType();
  16. if (!sourceType.IsEnum)
  17. return value;
  18. var enumerable = parameter as IEnumerable<Object>;
  19. if (enumerable == null)
  20. return value;
  21. var comboxItems = enumerable.OfType<TComboxItem>();
  22. return comboxItems.FirstOrDefault(i => System.Convert.ChangeType(i.Value, sourceType).Equals(System.Convert.ChangeType(value, sourceType)));
  23. }
  24. public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  25. {
  26. TComboxItem item = value as TComboxItem;
  27. if (item == null)
  28. return value;
  29. return System.Convert.ChangeType(item.Value, targetType);
  30. }
  31. }
  32. }