ItemsControl.ItemBindingGroup ItemsControl.ItemBindingGroup ItemsControl.ItemBindingGroup ItemsControl.ItemBindingGroup Property

Definición

Obtiene o establece el objeto BindingGroup que se copia en cada elemento de ItemsControl.Gets or sets the BindingGroup that is copied to each item in the 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; }
member this.ItemBindingGroup : System.Windows.Data.BindingGroup with get, set
Public Property ItemBindingGroup As BindingGroup

Valor de propiedad

BindingGroup que se copia en cada elemento de ItemsControl.The BindingGroup that is copied to each item in the ItemsControl.

Ejemplos

El ejemplo siguiente es parte de una aplicación que solicita al usuario que especifique a varios clientes y asignar a un representante de ventas para cada cliente y, a continuación, comprueba que el representante de ventas y el cliente pertenecen a la misma región.The following example is part of an application that prompts the user to enter multiple customers and assign a sales representative to each customer, and then checks that the sales representative and the customer belong to the same region. El ejemplo se establece la ItemBindingGroup de la ItemsControl por lo que la ValidationRule, AreasMatch, validará cada elemento.The example sets the ItemBindingGroup of the ItemsControl so the ValidationRule, AreasMatch, will validate each item. El ejemplo también se crea un Label que muestra los errores de validación.The example also creates a Label that displays validation errors. Tenga en cuenta que el Content de la Label está enlazado a un ValidationError que obtiene de la Validation.ValidationAdornerSiteForProperty propiedad.Notice that the Content of the Label is bound to a ValidationError that it gets from the Validation.ValidationAdornerSiteForProperty property. El valor de Validation.ValidationAdornerSiteForProperty es el contenedor del elemento que tiene el error.The value of Validation.ValidationAdornerSiteForProperty is the item container that has the error.

<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"/>

El ejemplo siguiente obtiene el contenedor de elementos y llamadas UpdateSources en el contenedor BindingGroup para validar los datos.The following example gets the item container and calls UpdateSources on the container's BindingGroup to validate the data. Debe validar los datos mediante una llamada a un método en el contenedor de elementos BindingGroup, no en el ItemBindingGroup de la ItemsControl.You must validate the data by calling a method on the item container's BindingGroup, not on the ItemBindingGroup of the ItemsControl.

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

Comentarios

Al establecer el ItemBindingGroup cada contenedor de elementos de propiedad, obtiene un BindingGroup que tiene el mismo ValidationRule objetos como el ItemBindingGroup, pero las propiedades que describen los datos en los enlaces, como Items y BindingExpressions, son específicos de los datos para cada elemento de la ItemsControl.When you set the ItemBindingGroup property, each item container gets a BindingGroup that has the same ValidationRule objects as the ItemBindingGroup, but the properties that describe the data in the bindings, such as Items and BindingExpressions, are specific to the data for each item in the ItemsControl. Debe tener acceso al contenedor de elementos BindingGroup para realizar operaciones tales como validan los datos y comprobar si hay errores en un elemento.You must access the item container's BindingGroup to perform operations such as validate the data and check for errors on an item.

Se aplica a