Compartilhar via


ItemsControl.ItemBindingGroup Propriedade

Definição

Obtém ou define a BindingGroup que é copiada para cada item na 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

Valor da propriedade

A BindingGroup que é copiada para cada item na ItemsControl.

Atributos

Exemplos

O exemplo a seguir faz parte de um aplicativo que solicita que o usuário insira vários clientes e atribua um representante de vendas a cada cliente e verifica se o representante de vendas e o cliente pertencem à mesma região. O exemplo define o ItemBindingGroupItemsControl de para que o ValidationRule, AreasMatch, valide cada item. O exemplo também cria um Label que exibe erros de validação. Observe que o Content do Label está associado a um ValidationError que ele obtém da Validation.ValidationAdornerSiteForProperty propriedade . O valor de é o contêiner de Validation.ValidationAdornerSiteForProperty item que tem o erro.

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

O exemplo a seguir obtém o contêiner de item e chama UpdateSources no contêiner BindingGroup para validar os dados. Você deve validar os dados chamando um método no contêiner do BindingGroupitem, não no ItemBindingGroup do 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

Comentários

Quando você define a ItemBindingGroup propriedade , cada contêiner de item obtém um BindingGroup que tem os mesmos ValidationRule objetos que o ItemBindingGroup, mas as propriedades que descrevem os dados nas associações, como Items e BindingExpressions, são específicas para os dados de cada item no ItemsControl. Você deve acessar o contêiner do BindingGroup item para executar operações como validar os dados e marcar para erros em um item.

Aplica-se a