4 using System.Globalization;
5 using System.Windows.Data;
6 using System.Windows.Markup;
8 namespace SiliconStudio.Presentation.ValueConverters
19 private readonly
Chained chainedConverter;
24 public const int MaxConverterCount = Chained.MaxConverterCount;
30 : this(null, null, null, null, null, null, null, null, null)
40 : this(multiConverter, converter, null, null, null, null, null, null, null)
51 : this(multiConverter, converter1, converter2, null, null, null, null, null, null)
63 : this(multiConverter, converter1, converter2, converter3, null, null, null, null, null)
76 : this(multiConverter, converter1, converter2, converter3, converter4, null, null, null, null)
91 : this(multiConverter, converter1, converter2, converter3, converter4, converter5, null, null, null)
107 : this(multiConverter, converter1, converter2, converter3, converter4, converter5, converter6, null, null)
124 : this(multiConverter, converter1, converter2, converter3, converter4, converter5, converter6, converter7, null)
143 chainedConverter =
new Chained();
144 MultiConverter = multiConverter;
145 Converter1 = converter1;
146 Converter2 = converter2;
147 Converter3 = converter3;
148 Converter4 = converter4;
149 Converter5 = converter5;
150 Converter6 = converter6;
151 Converter7 = converter7;
152 Converter8 = converter8;
162 public object MultiConverterParameter {
get; set; }
166 public Type MultiConverterTargetType {
get; set; }
171 public IValueConverter Converter1 {
get {
return chainedConverter.Converter1; } set { chainedConverter.Converter1 = value; } }
175 public IValueConverter Converter2 {
get {
return chainedConverter.Converter2; } set { chainedConverter.Converter2 = value; } }
179 public IValueConverter Converter3 {
get {
return chainedConverter.Converter3; } set { chainedConverter.Converter3 = value; } }
183 public IValueConverter Converter4 {
get {
return chainedConverter.Converter4; } set { chainedConverter.Converter4 = value; } }
187 public IValueConverter Converter5 {
get {
return chainedConverter.Converter5; } set { chainedConverter.Converter5 = value; } }
191 public IValueConverter Converter6 {
get {
return chainedConverter.Converter6; } set { chainedConverter.Converter6 = value; } }
195 public IValueConverter Converter7 {
get {
return chainedConverter.Converter7; } set { chainedConverter.Converter7 = value; } }
199 public IValueConverter Converter8 {
get {
return chainedConverter.Converter8; } set { chainedConverter.Converter8 = value; } }
204 public object Parameter1 {
get {
return chainedConverter.Parameter1; } set { chainedConverter.Parameter1 = value; } }
208 public object Parameter2 {
get {
return chainedConverter.Parameter2; } set { chainedConverter.Parameter2 = value; } }
212 public object Parameter3 {
get {
return chainedConverter.Parameter3; } set { chainedConverter.Parameter3 = value; } }
216 public object Parameter4 {
get {
return chainedConverter.Parameter4; } set { chainedConverter.Parameter4 = value; } }
220 public object Parameter5 {
get {
return chainedConverter.Parameter5; } set { chainedConverter.Parameter5 = value; } }
224 public object Parameter6 {
get {
return chainedConverter.Parameter6; } set { chainedConverter.Parameter6 = value; } }
228 public object Parameter7 {
get {
return chainedConverter.Parameter7; } set { chainedConverter.Parameter7 = value; } }
232 public object Parameter8 {
get {
return chainedConverter.Parameter8; } set { chainedConverter.Parameter8 = value; } }
237 public Type TargetType1 {
get {
return chainedConverter.TargetType1; } set { chainedConverter.TargetType1 = value; } }
241 public Type TargetType2 {
get {
return chainedConverter.TargetType2; } set { chainedConverter.TargetType2 = value; } }
245 public Type TargetType3 {
get {
return chainedConverter.TargetType3; } set { chainedConverter.TargetType3 = value; } }
249 public Type TargetType4 {
get {
return chainedConverter.TargetType4; } set { chainedConverter.TargetType4 = value; } }
253 public Type TargetType5 {
get {
return chainedConverter.TargetType5; } set { chainedConverter.TargetType5 = value; } }
257 public Type TargetType6 {
get {
return chainedConverter.TargetType6; } set { chainedConverter.TargetType6 = value; } }
261 public Type TargetType7 {
get {
return chainedConverter.TargetType7; } set { chainedConverter.TargetType7 = value; } }
265 public Type TargetType8 {
get {
return chainedConverter.TargetType8; } set { chainedConverter.TargetType8 = value; } }
274 public object Convert(
object[] values, Type targetType,
object parameter, CultureInfo culture)
276 if (MultiConverter == null)
throw new InvalidOperationException(
"No multi value converter has been set.");
277 var result = MultiConverter.Convert(values, MultiConverterTargetType ?? typeof(
object), MultiConverterParameter, culture);
278 return chainedConverter.Convert(result, targetType, parameter, culture);
282 public object[]
ConvertBack(
object value, Type[] targetTypes,
object parameter, CultureInfo culture)
284 if (MultiConverter == null)
throw new InvalidOperationException(
"No multi value converter has been set.");
285 var result = chainedConverter.ConvertBack(value, MultiConverterTargetType ?? typeof(
object), parameter, culture);
286 return MultiConverter.ConvertBack(result, targetTypes, MultiConverterParameter, culture);
object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter1, IValueConverter converter2, IValueConverter converter3, IValueConverter converter4, IValueConverter converter5, IValueConverter converter6, IValueConverter converter7)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter1, IValueConverter converter2, IValueConverter converter3, IValueConverter converter4, IValueConverter converter5, IValueConverter converter6)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
MultiChained()
Initializes a new instance of the MultiChained class.
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter1, IValueConverter converter2, IValueConverter converter3, IValueConverter converter4, IValueConverter converter5, IValueConverter converter6, IValueConverter converter7, IValueConverter converter8)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter1, IValueConverter converter2, IValueConverter converter3, IValueConverter converter4, IValueConverter converter5)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
override object ProvideValue(IServiceProvider serviceProvider)
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter1, IValueConverter converter2, IValueConverter converter3, IValueConverter converter4)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
This converter can wrap an IMultiValueConverter and chain the result of this converter to up to MaxCo...
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter1, IValueConverter converter2)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
MultiChained(IMultiValueConverter multiConverter, IValueConverter converter1, IValueConverter converter2, IValueConverter converter3)
Initializes a new instance of the MultiChained class with the given instances of IValueConverter.
This converter can chain up to MaxConverterCount IValueConverter to convert a value. The first converter takes the value parameter of the Chained value converter itself, and then each converter takes the previous converter output as input value. The parameter and target type of each converter can also be specified. IValueConverter.ConvertBack is supported and converters are invoked backward.