IValueConverter Interface

Expose des méthodes qui permettent aux données d'être modifiées lorsqu'elles traversent le moteur de liaison.

Syntaxe


public interface IValueConverter

Attributs

GuidAttribute("e6f2fef0-0712-487f-b313-f300b8d79aa1")
VersionAttribute(NTDDI_WIN8)
WebHostHiddenAttribute()

Membres

IValueConverterInterface comporte les types de membres suivants :

Méthodes

The IValueConverter Interface comporte les méthodes suivantes. Il hérite également des méthodes de Object Classe.

MéthodeDescription
Convert Modifies the source data before passing it to the target for display in the UI.
ConvertBack Modifies the target data before passing it to the source object. This method is called only in TwoWay bindings.

 

Remarques

Vous pouvez créer une classe qui vous permet de convertir le format de vos données entre la source et la cible en héritant de IValueConverter. Par exemple, vous pouvez souhaiter enregistrer une liste de couleurs en tant que valeurs RVBA, mais les restituer avec des noms de couleurs dans l'interface utilisateur. En implémentant Convert et ConvertBack, vous pouvez modifier le format des valeurs de données échangées entre la cible et la source par le moteur de liaison.

Remarque  Pour lier les données d'un convertisseur de valeurs personnalisé écrit en C++, le fichier d'en-tête dans lequel la classe d'implémentation IValueConverter est définie doit être incluse, directement ou indirectement, dans l'un des fichiers code-behind. Pour plus d'informations, consultez Créer votre première application de style Metro en C++.

Exemples

L'exemple suivant montre comment implémenter l'interface IValueConverter et utiliser le convertisseur lors de la liaison de données à une collection d'objets.


<UserControl x:Class="ConverterParameterEx.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:ConverterParameterEx" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" >
        <Grid.Resources>
           <local:DateFormatter x:Key="FormatConverter" />
        </Grid.Resources>
        
        <ComboBox Height="60" Width="250" x:Name="MusicCombo" 
            ItemsSource="{Binding}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock FontWeight="Bold" Text="{Binding Path=Name, Mode=OneWay}" />
                        <TextBlock Text="{Binding Path=Artist, Mode=OneWay}" />
                        <TextBlock Text="{Binding Path=ReleaseDate, Mode=OneWay,
                            Converter={StaticResource FormatConverter}, 
                            ConverterParameter=\{0:d\}}" />
                   </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>
</UserControl>



using System;
using System.Collections.ObjectModel;
using System.Globalization;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;

namespace ConverterParameterEx
{
    public partial class Page : UserControl
    {

        public ObservableCollection<Recording> MyMusic =
            new ObservableCollection<Recording>();
        public Page()
        {
            InitializeComponent();

            // Add items to the collection.
            MyMusic.Add(new Recording("Chris Sells", "Chris Sells Live",
                new DateTime(2008, 2, 5)));
            MyMusic.Add(new Recording("Luka Abrus",
                "The Road to Redmond", new DateTime(2007, 4, 3)));
            MyMusic.Add(new Recording("Jim Hance",
                "The Best of Jim Hance", new DateTime(2007, 2, 6)));

            // Set the data context for the combo box.
            MusicCombo.DataContext = MyMusic;
        }
    }

    // Simple business object.
    public class Recording
    {
        public Recording() { }
        public Recording(string artistName, string cdName, DateTime release)
        {
            Artist = artistName;
            Name = cdName;
            ReleaseDate = release;
        }
        public string Artist { get; set; }
        public string Name { get; set; }
        public DateTime ReleaseDate { get; set; }
    }

    public class DateFormatter : IValueConverter
    {
        // This converts the DateTime object to the string to display.
        public object Convert(object value, Type targetType, 
            object parameter, string language)
        {
            // Retrieve the format string and use it to format the value.
            string formatString = parameter as string;
            if (!string.IsNullOrEmpty(formatString))
            {
                return string.Format(
                    new CultureInfo(language), formatString, value);
            }
            // If the format string is null or empty, simply call ToString()
            // on the value.
            return value.ToString();
        }

        // No need to implement converting back on a one-way binding 
        public object ConvertBack(object value, Type targetType, 
            object parameter, string language)
        {
            throw new NotImplementedException();
        }
    }
}


Configuration requise

Client minimal pris en charge

Windows 8

Serveur minimal pris en charge

Windows Server 2012

Espace de noms

Windows.UI.Xaml.Data
Windows::UI::Xaml::Data [C++]

Métadonnées

Windows.winmd

Voir aussi

Binding
Exemple de liaison de données
Liaison de données avec XAML

 

 

Afficher:
© 2014 Microsoft