[WPF] Formatter l’affichage lors d’un binding, via StringFormat
Le Service Pack 1 du Framework .NET 3.5 apporte une nouveauté très intéressante pour ce qui concerne le binding avec WPF. En effet, il est très fréquent que l’on ait besoin de formatter l’affichage des données.
A l’heure actuelle, ce formatage passe obligatoirement par l’utilisation d’un convertisseur:
<TextBox x:Name="tbValue"
Text="0"
Width="100"
Canvas.Top="50"
Canvas.Left="50" />
<TextBlock x:Name="tb"
Width="100"
Text="{Binding ElementName=tbValue, Path=Text, Converter= {StaticResource ttcc}}"
Canvas.Top="100"
Canvas.Left="50" />
public class TextToCurrencyConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var s = String.Format("{0:C}", System.Convert.ToDecimal(value));
return s;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
Lors de l’exécution de l’application, le convertisseur est correctement appliqué et le résultat est formatté comme il se doit:
Avec le Service Pack 1, il est possible de simplifier cette procédure pour ne pas avoir à écrire un convertisseur. En effet, la propriété StringFormat joue le rôle du convertisseur:
<TextBlock x:Name="tb"
Width="100"
Text="{Binding ElementName=tbValue, Path=Text, StringFormat='Prix: {0:C}'}"
Canvas.Top="100"
Canvas.Left="50" />
Attention, il est important de noter que cela ne fonctionne que si la propriété que vous souhaitez bindée est de type String. Sinon, il faut passer par la propriété ContentStringFormat.
Simple mais efficace 
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :