Comment : convertir des données liées

Cet exemple montre comment appliquer la conversion en données utilisées dans les liaisons.

Pour convertir des données pendant la liaison, vous devez créer une classe qui implémente l’interfaceIValueConverter, qui inclut les méthodes et ConvertBack les Convert méthodes.

Exemple

L’exemple suivant montre l’implémentation d’un convertisseur de dates qui convertit la valeur de date passée afin qu’elle affiche 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 ValueConversionAttribute attribut pour indiquer aux outils de développement 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;
    }
}
Public Class DateConverter
    Implements System.Windows.Data.IValueConverter

    Public Function Convert(ByVal value As Object,
                            ByVal targetType As System.Type,
                            ByVal parameter As Object,
                            ByVal culture As System.Globalization.CultureInfo) _
             As Object Implements System.Windows.Data.IValueConverter.Convert

        Dim DateValue As DateTime = CType(value, DateTime)
        Return DateValue.ToShortDateString

    End Function

    Public Function ConvertBack(ByVal value As Object,
                                ByVal targetType As System.Type,
                                ByVal parameter As Object,
                                ByVal culture As System.Globalization.CultureInfo) _
            As Object Implements System.Windows.Data.IValueConverter.ConvertBack

        Dim strValue As String = value
        Dim resultDateTime As DateTime
        If DateTime.TryParse(strValue, resultDateTime) Then
            Return resultDateTime
        End If
        Return DependencyProperty.UnsetValue

    End Function
End Class

Une fois que vous avez créé un convertisseur, vous pouvez l’ajouter en tant que ressource dans votre fichier XAML (Extensible Application Markup Language). Dans l’exemple suivant, src mappe à l’espace de noms dans lequel DateConverter est défini.

<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 texte du TextBlock fichier 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 ressource non affichée dans cette rubrique.

Voir aussi