/////////////////////////////////////////////////////////////////////////////// //Copyright (c) 2016, 北京探索者软件公司 //All rights reserved. //文件名称: ValueCOnvertProxy.cs //文件描述: 转换器代理 //创 建 者: xls //创建日期: 2017-1-11 //版 本 号:1.0.0.0 //////////////////////////////////////////////////////////////////////////////// using System; using System.Windows; using System.Windows.Data; namespace FWindSoft.Wpf { public class ValueConvertProxy : Freezable, IValueConverter { public static readonly DependencyProperty RealConvertProperty = DependencyProperty.Register("RealConvert", typeof(IValueConverter), typeof(ValueConvertProxy), new UIPropertyMetadata(null)); /// /// 真实转换器 /// public IValueConverter RealConvert { get { return (IValueConverter)GetValue(RealConvertProperty); } set { SetValue(RealConvertProperty, value); } } public static readonly DependencyProperty ParameterProperty = DependencyProperty.Register("Parameter", typeof(object), typeof(ValueConvertProxy), new UIPropertyMetadata(null)); /// /// 关联参数 /// public object Parameter { get { return (object)GetValue(ParameterProperty); } set { SetValue(ParameterProperty, value); } } public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (RealConvert == null) { return value; //return targetType.IsValueType ? Activator.CreateInstance(targetType) : null; } return RealConvert.Convert(value, targetType, Parameter??parameter, culture); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (RealConvert == null) { return value; //return targetType.IsValueType ? Activator.CreateInstance(targetType) : null; } return RealConvert.ConvertBack(value, targetType, Parameter ?? parameter, culture); } protected override Freezable CreateInstanceCore() { return new ValueConvertProxy(){RealConvert=this.RealConvert,Parameter=this.Parameter}; } } }