From 8e128c9b247a3f98f19d75c9d340e94a6fa3c980 Mon Sep 17 00:00:00 2001 From: robloo Date: Thu, 28 Apr 2022 18:09:19 -0400 Subject: [PATCH] Add ValueConverterGroup --- .../Converters/ValueConverterGroup.cs | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/Avalonia.Controls.ColorPicker/Converters/ValueConverterGroup.cs diff --git a/src/Avalonia.Controls.ColorPicker/Converters/ValueConverterGroup.cs b/src/Avalonia.Controls.ColorPicker/Converters/ValueConverterGroup.cs new file mode 100644 index 0000000000..2710c220f4 --- /dev/null +++ b/src/Avalonia.Controls.ColorPicker/Converters/ValueConverterGroup.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using Avalonia.Data.Converters; + +namespace Avalonia.Controls.Primitives.Converters +{ + /// + /// Converter to chain together multiple converters. + /// + public class ValueConverterGroup : List, IValueConverter + { + /// + /// + public object? Convert( + object? value, + Type targetType, + object? parameter, + CultureInfo culture) + { + object? curValue; + + curValue = value; + for (int i = 0; i < Count; i++) + { + curValue = this[i].Convert(curValue, targetType, parameter, culture); + } + + return curValue; + } + + /// + public object? ConvertBack( + object? value, + Type targetType, + object? parameter, + CultureInfo culture) + { + object? curValue; + + curValue = value; + for (int i = (Count - 1); i >= 0; i--) + { + curValue = this[i].ConvertBack(curValue, targetType, parameter, culture); + } + + return curValue; + } + } +}