Esta documentación está archivada y no tiene mantenimiento.

ItemsControl.ItemBindingGroup (Propiedad)

Actualización: Julio de 2008

Obtiene o establece el objeto BindingGroup que se copia en cada elemento de ItemsControl.

Espacio de nombres:  System.Windows.Controls
Ensamblado:  PresentationFramework (en PresentationFramework.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/xaml/presentation

[BindableAttribute(true)]
public BindingGroup ItemBindingGroup { get; set; }
/** @property */
/** @attribute BindableAttribute(true) */
public BindingGroup get_ItemBindingGroup()
/** @property */
/** @attribute BindableAttribute(true) */
public  void set_ItemBindingGroup(BindingGroup value)

public function get ItemBindingGroup () : BindingGroup
public function set ItemBindingGroup (value : BindingGroup)
<object>
  <object.ItemBindingGroup>
    <BindingGroup .../>
  </object.ItemBindingGroup>
</object>

Valor de propiedad

Tipo: System.Windows.Data.BindingGroup
BindingGroup que se copia en cada elemento de ItemsControl.

Cuando se establece la propiedad ItemBindingGroup, cada contenedor de elementos obtiene un BindingGroup que tiene los mismos objetos ValidationRule que ItemBindingGroup, pero las propiedades que describen los datos de los enlaces, como Items y BindingExpressions, son específicas de los datos de cada elemento de ItemsControl. Debe obtener acceso a la propiedad BindingGroup del contenedor de elementos para realizar operaciones tales como validar los datos y comprobar los errores de un elemento.

El ejemplo siguiente forma parte de una aplicación que pide al usuario que especifique varios clientes y asigne un representante de ventas a cada cliente; después, comprueba que el representante de ventas y el cliente pertenecen a la misma región. En el ejemplo se establece la propiedad ItemBindingGroup de ItemsControl de manera que ValidationRule, AreasMatch, valide cada elemento. En el ejemplo también se crea un control Label que muestra los errores de validación. Observe que la propiedad Content de Label está enlazada a un control ValidationError que obtiene de la propiedad Validation.ValidationAdornerSiteFor. El valor de Validation.ValidationAdornerSiteFor es el contenedor de elementos que presenta el error. Para obtener el ejemplo completo, vea Ejemplo Validate an Item in an ItemsControl.

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


En el ejemplo siguiente se obtiene el contenedor de elementos y se llama a UpdateSources en el objeto BindingGroup del contenedor para validar los datos. Debe validar los datos mediante una llamada a un método en el BindingGroup del contenedor de elementos, no en el ItemBindingGroup de 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;
    }

}


.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5 SP1, 3.0 SP1

Fecha

Historial

Motivo

Julio de 2008

Se ha agregado un tema para el nuevo miembro.

Cambio de características de SP1.

Mostrar: