Cette documentation est archivée et n’est pas conservée.

MultiBinding, classe

Mise à jour : novembre 2007

Décrit une collection d'objets Binding jointe à une propriété de cible de liaison unique.

Espace de noms :  System.Windows.Data
Assembly :  PresentationFramework (dans PresentationFramework.dll)
XMLNS pour XAML : http://schemas.microsoft.com/winfx/xaml/presentation

[ContentPropertyAttribute("Bindings")]
public class MultiBinding : BindingBase, 
	IAddChild
/** @attribute ContentPropertyAttribute("Bindings") */
public class MultiBinding extends BindingBase implements IAddChild
public class MultiBinding extends BindingBase implements IAddChild
<MultiBinding>
  Bindings
</MultiBinding>

Vous pouvez spécifier plusieurs liaisons dans un objet MultiBinding. Lorsque vous utilisez l'objet MultiBinding avec un convertisseur, il produit une valeur finale pour la cible de liaison en fonction des valeurs de ces liaisons. Par exemple, la couleur peut être calculée à partir de valeurs de rouge, de bleu et de vert, qui peuvent être des valeurs provenant des mêmes objets ou de différents objets de source de liaison. Lorsqu'une valeur se déplace de la cible aux sources, la valeur de propriété cible est traduite en un jeu de valeurs renvoyées dans les liaisons.

Les valeurs des propriétés Mode et UpdateSourceTrigger déterminent les fonctionnalités du MultiBinding et sont utilisées comme valeurs par défaut pour toutes les liaisons dans la collection à moins qu'une liaison individuelle ne substitue ces propriétés. Par exemple, si la propriété Mode sur l'objet MultiBinding a la valeur TwoWay, alors toutes les liaisons dans la collection sont considérées TwoWay à moins que vous ne définissiez explicitement une valeur Mode différente sur l'une des liaisons. Pour plus d'informations, consultez les propriétés Binding.Mode et Binding.UpdateSourceTrigger.

MultiBinding ne prend actuellement en charge que des objets de type Binding et non de type MultiBinding ou PriorityBinding.

MultiBinding vous permet de lier une propriété cible de liaison à une liste de propriétés source, puis d'appliquer une logique pour produire une valeur à l'aide des entrées fournies. Cet exemple montre comment utiliser MultiBinding.

Dans l'exemple suivant, NameListData fait référence à une collection d'objets PersonName, qui contiennent deux propriétés, firstName et lastName. L'exemple suivant produit un TextBlock qui affiche le nom et le prénom d'une personne, en commençant par le nom.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:c="clr-namespace:SDKSample"
  x:Class="SDKSample.Window1"
  Width="400"
  Height="280"
  Title="MultiBinding Sample">
	
  <Window.Resources>
    <c:NameList x:Key="NameListData"/>
    <c:NameConverter x:Key="myNameConverter"/>


...


</Window.Resources>


...


<TextBlock Name="textBox2" DataContext="{StaticResource NameListData}">
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myNameConverter}"
                  ConverterParameter="FormatLastFirst">
      <Binding Path="FirstName"/>
      <Binding Path="LastName"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>


...


</Window>


Pour comprendre comment est réalisé le format nom-prénom, observons l'implémentation de NameConverter:

public class NameConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        string name;

        switch ((string)parameter)
        {
            case "FormatLastFirst":
                name = values[1] + ", " + values[0];
                break;
            case "FormatNormal":
            default:
                name = values[0] + " " + values[1];
                break;
        }

        return name;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        string[] splitValues = ((string)value).Split(' ');
        return splitValues;
    }
}


NameConverter implémente l'interface IMultiValueConverter. NameConverter prend les valeurs des liaisons individuelles et les place dans le tableau d'objets de valeurs. L'ordre dans lequel les éléments Binding apparaissent sous l'élément MultiBinding est l'ordre de placement des valeurs dans le tableau. La valeur de l'attribut ConverterParameter est référencée par l'argument de paramètre de la méthode Converter, qui bascule le paramètre pour déterminer comment formater le nom.

Pour l'exemple complet, consultez Implémentation de MultiBinding paramétré, exemple.

Pour obtenir un autre exemple d'implémentation de IMultiValueConverter, consultez Liaison de données, démonstration.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

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
Afficher: