est-il possible de définir la propriété de premier plan d'une valeur de texte TextBlock by TextBlock? Par exemple: La valeur du texte est Mike, la propriété du premier plan est Noire, la valeur est Tim, la valeur de la propriété est verte, etc. Je recherche avec google, mais je ne trouve aucune solution.WPF: Comment définir la propriété Foreground d'une valeur de texte TextBlock by TextBlock?
Répondre
vous avez une vue de modèle (implémentant INotifyPropertyChanged) qui a le texte en tant que propriété et la couleur de premier plan en tant que propriété, le bloc de texte lie ces deux propriétés à la vue modèle. la propriété color peut dépendre de la propriété text.
Si vous voulez avoir la possibilité de faire quelque chose de malin, comme mapper dynamiquement des textes sur des couleurs, etc., vous pouvez utiliser une classe Converter. Je suppose que le texte est mis à se lier à quelque chose, vous pouvez lier à la même chose au premier plan, mais par un convertisseur de mesure:
<TextBlock Text="{Binding Path=Foo}"
Foreground="{Binding Path=Foo, Converter={StaticResource myConverter}" />
serait défini Votre convertisseur quelque chose comme ceci:
public class ColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string text = (string)value;
switch (text)
{
case "Mike":
return Colors.Red;
case "John":
return Colors.Blue;
default:
return Colors.Black;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
Évidemment, au lieu de l'instruction switch simple, vous pourriez avoir une logique plus intelligente pour gérer de nouvelles valeurs et autres.
Voulez ajouter: Si vous n'utilisez pas de ressources statiques, la valeur renvoyée dans le convertisseur doit être: 'new SolidColorBrush (Colors.Red)' pour lier correctement la valeur du champ. – Fragment
Je pense que vous constaterez que cette approche est beaucoup plus flexible et testable que l'approche déclencheur/convertisseur. –