///////////////////////////////////////////////////////////////////////////////
//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};
}
}
}