8
votes

WPF TextBlock Numéro négatif en rouge

J'essaie de comprendre le meilleur moyen de créer un style / déclencheur pour régler le premier plan au rouge, lorsque la valeur est <0. Quelle est la meilleure façon de faire cela? Je suppose que Datatriggigriggigriggigriggigriggigriggy, mais comment puis-je vérifier la valeur négative, dois-je créer mon propre IValueconverter?


0 commentaires

3 Réponses :


14
votes

Si vous n'utilisez pas de modèle MVVM (où vous pourriez avoir une propriété de premier plan), la tâche la plus facile à faire est de créer un nouvel iValueconverter, de lier votre arrière-plan à votre valeur.

à MyWindow. xaml: strong> p> xxx pré>

valeur de valeurOrgrackColorconverter.cs strong> p>

using System;
using System.Windows.Media;
using System.Windows.Data;

namespace MyLocalNamespace
{
    class ValueToForegroundColorConverter: IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            SolidColorBrush brush = new SolidColorBrush(Colors.Black);

            Double doubleValue = 0.0;
            Double.TryParse(value.ToString(), out doubleValue);

            if (doubleValue < 0)
                brush = new SolidColorBrush(Colors.Red);

            return brush;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}


8 commentaires

Cela fonctionnerait, bien que je préfère créer une sorte de style (plus facile à réimplément), pourquoi cela ne fonctionnerait-il pas avec MVVM?


@Lndcobra: Cela fonctionnera avec MVVM. Ce que je pense que Wonko signifie, c'est qu'avec MVVM, vous pouvez choisir d'exposer une propriété FouchegroundColor sur votre viewModel au lieu d'utiliser un ValueConverter.


@Jakob: absolument correct. @LnDCOBRA: Vous pouvez implémenter un style, avec la valeur de la propriété de premier plan définie sur la même liaison que ci-dessus.