Binding sur DateTime et formatage6 septembre 2010
Il existe plusieurs façon d’arriver à ses fins lorsque qu’il s’agit d’afficher une partie précise d’une date, comme par exemple l’heure, ou l’année en « bindant » un contrôle sur la propriété adéquate de l’objet DateTime.
Cependant, il serait une solution plus judicieuse si l’on souhaite, par exemple, combiner différentes parties d’une date afin d’en faire un formatage ordonné. Cette solution est de passer par un Converter et de lui passer en paramètre le formattage de date choisi.
Le Converter (C#)
using System.Windows.Data;
public class DateToDatePartConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
DateTime? date = (DateTime?)value;
string format = (string)parameter;
return date == null ? null :
date.Value.ToString(format, CultureInfo.InvariantCulture);
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Vous pourrez utiliser le code de ce Converter avec des objets de type DateTime ou DateTime? (Nullable<DateTime>).
Exemple d’utilisation (XAML)
Importation du namespace du Converter :
xmlns:Conv="clr-namespace:WpfApplication1.Converters;assembly=WpfApplication1"
Création d’une ressource statique pour le Converter :
<Window.Resources> <Conv:DateToDatePartConverter x:Key="dateToDatePart" /> <Window.Resources>
Utilisation du Converter dans une instruction de Binding :
<TextBlock Text="{Binding Path=SettlementDate, Converter={StaticResource dateToDatePart},
ConverterParameter='dd/MM/yy'}" />
J’ai mis à la ligne le ConverterParameter pour des raisons de lisibilité dans cet article, pensez donc à le remettre en fin de ligne du TextBlock, sinon vous aurez une erreur de syntaxe XAML.
Aucun commentaire pour le moment. Soyez le/la premi(er/ère).