ItemsControl.ItemBindingGroup Propriété

Définition

Obtient ou définit le BindingGroup qui est copié dans chaque élément du ItemsControl.

public:
 property System::Windows::Data::BindingGroup ^ ItemBindingGroup { System::Windows::Data::BindingGroup ^ get(); void set(System::Windows::Data::BindingGroup ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.Data.BindingGroup ItemBindingGroup { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemBindingGroup : System.Windows.Data.BindingGroup with get, set
Public Property ItemBindingGroup As BindingGroup

Valeur de propriété

BindingGroup qui est copié dans chaque élément du ItemsControl.

Attributs

Exemples

L’exemple suivant fait partie d’une application qui invite l’utilisateur à entrer plusieurs clients et à affecter un représentant commercial à chaque client, puis vérifie que le représentant commercial et le client appartiennent à la même région. L’exemple définit le ItemBindingGroup de pour ItemsControl que , AreasMatchValidationRule, valide chaque élément. L’exemple crée également un qui affiche des Label erreurs de validation. Notez que le Content de Label est lié à un ValidationError qu’il obtient à partir de la Validation.ValidationAdornerSiteForProperty propriété . La valeur de Validation.ValidationAdornerSiteForProperty est le conteneur d’éléments qui contient l’erreur.

<ItemsControl Name="customerList"  ItemTemplate="{StaticResource ItemTemplate}"
              ItemsSource="{Binding}">
  <ItemsControl.ItemBindingGroup>
    <BindingGroup>
      <BindingGroup.ValidationRules>
        <src:AreasMatch/>
      </BindingGroup.ValidationRules>
    </BindingGroup>
  </ItemsControl.ItemBindingGroup>
  <ItemsControl.ItemContainerStyle>
    <Style TargetType="{x:Type ContentPresenter}">
      <Setter Property="Validation.ValidationAdornerSite"
              Value="{Binding ElementName=validationErrorReport}"/>
    </Style>
  </ItemsControl.ItemContainerStyle>
</ItemsControl>
<Label Name="validationErrorReport" 
       Content="{Binding RelativeSource={RelativeSource Self}, 
       Path=(Validation.ValidationAdornerSiteFor).(Validation.Errors)[0].ErrorContent}"
       Margin="5" Foreground="Red" HorizontalAlignment="Center"/>

L’exemple suivant obtient le conteneur d’éléments BindingGroup et appelle UpdateSources sur le conteneur pour valider les données. Vous devez valider les données en appelant une méthode sur le conteneur d’éléments BindingGroup, et non sur le ItemBindingGroupItemsControldu .

void saveCustomer_Click(object sender, RoutedEventArgs e)
{
    Button btn = sender as Button;
    FrameworkElement container = (FrameworkElement) customerList.ContainerFromElement(btn);

    // If the user is trying to change an items, when another item has an error,
    // display a message and cancel the currently edited item.
    if (bindingGroupInError != null && bindingGroupInError != container.BindingGroup)
    {
        MessageBox.Show("Please correct the data in error before changing another customer");
        container.BindingGroup.CancelEdit();
        return;
    }

    if (container.BindingGroup.UpdateSources())
    {
        bindingGroupInError = null;
        MessageBox.Show("Item Saved");
    }
    else
    {
        bindingGroupInError = container.BindingGroup;
    }
}
Private Sub saveCustomer_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim btn As Button = TryCast(sender, Button)
    Dim container As FrameworkElement = CType(customerList.ContainerFromElement(btn), FrameworkElement)

    ' If the user is trying to change an items, when another item has an error,
    ' display a message and cancel the currently edited item.
    If bindingGroupInError IsNot Nothing AndAlso bindingGroupInError IsNot container.BindingGroup Then
        MessageBox.Show("Please correct the data in error before changing another customer")
        container.BindingGroup.CancelEdit()
        Return
    End If

    If container.BindingGroup.UpdateSources() Then
        bindingGroupInError = Nothing
        MessageBox.Show("Item Saved")
    Else
        bindingGroupInError = container.BindingGroup
    End If

End Sub

Remarques

Lorsque vous définissez la ItemBindingGroup propriété , chaque conteneur d’éléments obtient un BindingGroup qui a les mêmes ValidationRule objets que le ItemBindingGroup, mais les propriétés qui décrivent les données dans les liaisons, telles que Items et BindingExpressions, sont spécifiques aux données de chaque élément dans .ItemsControl Vous devez accéder au conteneur d’éléments BindingGroup pour effectuer des opérations telles que valider les données et case activée en cas d’erreurs sur un élément.

S’applique à