Mise à jour : novembre 2007
Fournit une manière d'appliquer une logique personnalisée à une liaison.
Espace de noms :
System.Windows.Data Assembly :
PresentationFramework (dans PresentationFramework.dll)
Public Interface IValueConverter
Dim instance As IValueConverter
public interface IValueConverter
public interface class IValueConverter
public interface IValueConverter
public interface IValueConverter
Les interfaces ne peuvent pas être utilisées directement en XAML ; consultez les types qui implémentent cette interface.
Si vous souhaitez associer un convertisseur de valeur à une liaison, créez une classe qui implémente l'interface IValueConverter puis implémentez les méthodes Convert et ConvertBack. Les convertisseurs peuvent modifier des données d'un type en un autre, traduire des données selon des de culture ou modifier d'autres aspects de la présentation. Pour quelques exemples de scénarios de convertisseur typiques, consultez la section sur la conversion de données (« Data Conversion ») dans Vue d'ensemble de la liaison de données.
Les convertisseurs de valeur prennent en compte la culture. Les méthodes Convert et ConvertBack ont chacune un paramètre culture qui indique les informations de culture. Si les informations de culture sont sans rapport avec la conversion, vous pouvez ignorer ce paramètre dans votre convertisseur personnalisé.
Les méthodes Convert et ConvertBack ont également un paramètre appelé parameter vous permettant d'utiliser la même instance du convertisseur avec des paramètres différents. Par exemple, vous pouvez écrire un convertisseur de mise en forme qui produit des formats différents de données basés sur le paramètre d'entrée que vous utilisez. Vous pouvez utiliser ConverterParameter de la classe Binding pour passer un paramètre comme argument dans les méthodes Convert et ConvertBack.
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.
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.ToString();
DateTime resultDateTime;
if (DateTime.TryParse(strValue, out resultDateTime))
{
return resultDateTime;
}
return value;
}
}
Après avoir créé un convertisseur, vous pouvez l'ajouter en tant que ressource dans votre fichier XAML (Extensible Application Markup Language). 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 la section des ressources de l'exemple, qui n'est pas illustrée dans cette rubrique. Pour obtenir le code complet dont ont été extraits les exemples ci-dessus, consultez Liaison de données, démonstration.
Windows Vista
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
.NET Framework
Pris en charge dans : 3.5, 3.0
Référence
Autres ressources