ValueConvertProxy.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. 
  2. ///////////////////////////////////////////////////////////////////////////////
  3. //Copyright (c) 2016, 北京探索者软件公司
  4. //All rights reserved.
  5. //文件名称: ValueCOnvertProxy.cs
  6. //文件描述: 转换器代理
  7. //创 建 者: xls
  8. //创建日期: 2017-1-11
  9. //版 本 号:1.0.0.0
  10. ////////////////////////////////////////////////////////////////////////////////
  11. using System;
  12. using System.Windows;
  13. using System.Windows.Data;
  14. namespace FWindSoft.Wpf
  15. {
  16. public class ValueConvertProxy : Freezable, IValueConverter
  17. {
  18. public static readonly DependencyProperty RealConvertProperty = DependencyProperty.Register("RealConvert", typeof(IValueConverter),
  19. typeof(ValueConvertProxy), new UIPropertyMetadata(null));
  20. /// <summary>
  21. /// 真实转换器
  22. /// </summary>
  23. public IValueConverter RealConvert
  24. {
  25. get { return (IValueConverter)GetValue(RealConvertProperty); }
  26. set { SetValue(RealConvertProperty, value); }
  27. }
  28. public static readonly DependencyProperty ParameterProperty = DependencyProperty.Register("Parameter", typeof(object),
  29. typeof(ValueConvertProxy), new UIPropertyMetadata(null));
  30. /// <summary>
  31. /// 关联参数
  32. /// </summary>
  33. public object Parameter
  34. {
  35. get { return (object)GetValue(ParameterProperty); }
  36. set { SetValue(ParameterProperty, value); }
  37. }
  38. public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  39. {
  40. if (RealConvert == null)
  41. {
  42. return value;
  43. //return targetType.IsValueType ? Activator.CreateInstance(targetType) : null;
  44. }
  45. return RealConvert.Convert(value, targetType, Parameter??parameter, culture);
  46. }
  47. public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  48. {
  49. if (RealConvert == null)
  50. {
  51. return value;
  52. //return targetType.IsValueType ? Activator.CreateInstance(targetType) : null;
  53. }
  54. return RealConvert.ConvertBack(value, targetType, Parameter ?? parameter, culture);
  55. }
  56. protected override Freezable CreateInstanceCore()
  57. {
  58. return new ValueConvertProxy(){RealConvert=this.RealConvert,Parameter=this.Parameter};
  59. }
  60. }
  61. }