Share via


Comment : convertir des données liées

Cet exemple montre comment convertir des données utilisées dans des liaisons.

Pour convertir des données pendant une liaison, vous devez créer une classe qui implémente l'interface IValueConverter, laquelle inclut les méthodes Convert et ConvertBack.

Exemple

L'exemple suivant illustre l'implémentation d'un convertisseur de date qui convertit la valeur de date qui lui est passée de manière à afficher uniquement l'année, le mois et le jour. Lors de l'implémentation de l'interface IValueConverter, il est recommandé de décorer l'implémentation avec un attribut ValueConversionAttribute pour indiquer aux outils de développement quels sont les types de données impliqués dans la conversion, comme dans l'exemple suivant :

[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DateTime date = (DateTime)value;
        return date.ToShortDateString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string strValue = value as string;
        DateTime resultDateTime;
        if (DateTime.TryParse(strValue, out resultDateTime))
        {
            return resultDateTime;
        }
        return DependencyProperty.UnsetValue;
    }
}

Après avoir créé un convertisseur, vous pouvez l'ajouter en tant que ressource dans votre fichier Extensible Application Markup Language (XAML). Dans l'exemple suivant, src correspond à l'espace de noms dans lequel est défini le convertisseur de date.

<src:DateConverter x:Key="dateConverter"/>

Enfin, vous pouvez utiliser le convertisseur dans votre liaison à l'aide de la syntaxe suivante. Dans l'exemple suivant, le contenu textuel de TextBlock est lié à StartDate, qui est une propriété d'une source de données externe.

<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,8,0"
           Name="startDateTitle"
           Style="{StaticResource smallTitleStyle}">Start Date:</TextBlock>
<TextBlock Name="StartDateDTKey" Grid.Row="2" Grid.Column="1" 
    Text="{Binding Path=StartDate, Converter={StaticResource dateConverter}}" 
    Style="{StaticResource textStyleTextBlock}"/>

Les ressources de style référencées dans l'exemple ci-dessus sont définies dans une section de ressources qui n'est pas illustrée dans cette rubrique.

Voir aussi

Tâches

Comment : implémenter la validation de la liaison

Concepts

Vue d'ensemble de la liaison de données

Autres ressources

Rubriques "Comment" relatives aux liaisons de données