ItemsControl.ItemBindingGroup Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 , AreasMatch
ValidationRule, 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.