BoolToBoolItemConverter.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 
  2. ///////////////////////////////////////////////////////////////////////////////
  3. //Copyright (c) 2016, 北京探索者软件公司
  4. //All rights reserved.
  5. //文件名称: BoolToBoolItemConverter.cs
  6. //文件描述: 布尔转换成BoolItem
  7. //创 建 者: xls
  8. //创建日期: 2018-1-18
  9. //版 本 号:1.0.0.0
  10. ////////////////////////////////////////////////////////////////////////////////
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using System.Windows.Data;
  17. namespace FWindSoft.Wpf
  18. {
  19. public class BoolToBoolItemConverter: IValueConverter
  20. {
  21. public static BoolToBoolItemConverter Instance = new BoolToBoolItemConverter();
  22. public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  23. {
  24. Type sourceType = value.GetType();
  25. if (sourceType!=typeof(bool))
  26. return value;
  27. var enumerable = parameter as IEnumerable<Object>;
  28. if (enumerable == null)
  29. return value;
  30. var items = enumerable.OfType<BoolItem>();
  31. return items.FirstOrDefault(i => i.Value.Equals(System.Convert.ChangeType(value, sourceType)));
  32. }
  33. public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  34. {
  35. BoolItem item = value as BoolItem;
  36. if (item == null)
  37. return value;
  38. return item.Value;
  39. }
  40. }
  41. }