diff options
Diffstat (limited to 'Gestor.Common/Gestor.Common.Converters/ComparativoColorConverter.cs')
| -rw-r--r-- | Gestor.Common/Gestor.Common.Converters/ComparativoColorConverter.cs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/Gestor.Common/Gestor.Common.Converters/ComparativoColorConverter.cs b/Gestor.Common/Gestor.Common.Converters/ComparativoColorConverter.cs new file mode 100644 index 0000000..235f0a3 --- /dev/null +++ b/Gestor.Common/Gestor.Common.Converters/ComparativoColorConverter.cs @@ -0,0 +1,56 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using System.Windows.Media; + +namespace Gestor.Common.Converters; + +public class ComparativoColorConverter : IMultiValueConverter +{ + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + try + { + if (values[0] == null) + { + return 0; + } + if (values[1] == null) + { + return 0; + } + decimal num = ((!(values[0] is int)) ? ((decimal?)values[0]).GetValueOrDefault() : ((decimal)(int)values[0])); + decimal num2 = ((!(values[1] is int)) ? ((decimal?)values[1]).GetValueOrDefault() : ((decimal)(int)values[1])); + if (num == 0m && num2 == 0m) + { + return Brushes.DarkGoldenrod; + } + if (num == 0m && num2 > 0m) + { + return Brushes.Red; + } + if (num2 == 0m && num > 0m) + { + return Brushes.Green; + } + if (num == 0m && num2 < 0m) + { + return Brushes.Green; + } + if (num2 == 0m && num < 0m) + { + return Brushes.Red; + } + return (num / num2 - 1m > 0m) ? Brushes.Green : Brushes.Red; + } + catch (Exception) + { + return Brushes.Black; + } + } + + public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) + { + return null; + } +} |