object[] IMultiValueConverter.ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { if (value == DependencyProperty.UnsetValue) { return(Enumerable.Repeat(DependencyProperty.UnsetValue, targetTypes.Length).ToArray()); } var castedValue = ChainConverterHelper.CastValue <TTo>(value, this); return(ConvertBack(castedValue, targetTypes, parameter, culture).Cast <object>().ToArray()); }
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureArgumentType cultureArgument) { if (value == DependencyProperty.UnsetValue) { return(DependencyProperty.UnsetValue); } var castedValue = ChainConverterHelper.CastValue <TTo>(value, this); object convertedValue = ConvertBack(castedValue, targetType, parameter, cultureArgument); if (Converter != null) { convertedValue = Converter.ConvertBack(convertedValue, targetType, parameter, cultureArgument); } return(convertedValue); }
object IMultiValueConverter.Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values.Any(x => Equals(x, DependencyProperty.UnsetValue))) { return(DependencyProperty.UnsetValue); } var castedValues = values.Select(x => ChainConverterHelper.CastValue <TFrom>(x, this)).ToArray(); object convertedValue = Convert(castedValues, targetType, parameter, culture); if (Converter != null) { var innerCultureArgument = GetCultureArgumentForInnerConverter(culture); convertedValue = Converter.Convert(convertedValue, targetType, parameter, innerCultureArgument); } return(convertedValue); }
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureArgumentType cultureArgument) { if (value == DependencyProperty.UnsetValue) { return(DependencyProperty.UnsetValue); } var castedValue = ChainConverterHelper.CastValue <TFrom>(value, this); if (CheckToStopChainConverting(castedValue, targetType, parameter, cultureArgument)) { return(GetStoppedValue(castedValue, targetType, parameter, cultureArgument)); } var valueToConvert = GetValueToConvert(castedValue, targetType, parameter, cultureArgument); if (Converter != null) { return(Converter.Convert(valueToConvert, targetType, parameter, cultureArgument)); } return(valueToConvert); }