Condividi tramite


ItemsControl.ItemBindingGroup Proprietà

Definizione

Ottiene o imposta l'oggetto BindingGroup che viene copiato in ogni elemento nell'oggetto 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

Valore della proprietà

Oggetto BindingGroup che viene copiato in ogni elemento nell'oggetto ItemsControl.

Attributi

Esempio

L'esempio seguente fa parte di un'applicazione che richiede all'utente di immettere più clienti e assegnare un rappresentante di vendita a ogni cliente e quindi verifica che il rappresentante e il cliente appartengano alla stessa area. Nell'esempio viene impostato l'oggetto ItemBindingGroupItemsControl di in modo che , ValidationRuleAreasMatch, convaliderà ogni elemento. L'esempio crea anche un oggetto Label che visualizza gli errori di convalida. Si noti che l'oggetto dell'oggetto ContentLabel è associato a un ValidationError oggetto ottenuto dalla Validation.ValidationAdornerSiteForProperty proprietà . Il valore di è il contenitore di Validation.ValidationAdornerSiteForProperty elementi con l'errore.

<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'esempio seguente ottiene il contenitore di elementi e chiama UpdateSources sul contenitore BindingGroup per convalidare i dati. È necessario convalidare i dati chiamando un metodo sul contenitore di BindingGroupelementi, non sul ItemBindingGroup di 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

Commenti

Quando si imposta la ItemBindingGroup proprietà , ogni contenitore di elementi ottiene un BindingGroup oggetto con gli stessi ValidationRule oggetti di ItemBindingGroup, ma le proprietà che descrivono i dati nelle associazioni, ad esempio Items e BindingExpressions, sono specifiche per i dati per ogni elemento in ItemsControl. È necessario accedere al contenitore di BindingGroup elementi per eseguire operazioni quali convalidare i dati e verificare la presenza di errori in un elemento.

Si applica a