ItemsControl.ItemBindingGroup Eigenschap

Definitie

Hiermee haalt u de BindingGroup gekopieerde items op of stelt u deze in op elk item in de 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

Waarde van eigenschap

Het BindingGroup item dat naar elk item in het ItemsControlitem wordt gekopieerd.

Kenmerken

Voorbeelden

Het volgende voorbeeld maakt deel uit van een toepassing die de gebruiker vraagt om meerdere klanten in te voeren en een verkoopvertegenwoordiger toe te wijzen aan elke klant en vervolgens controleert of de verkoopmedewerker en de klant deel uitmaken van dezelfde regio. In het ItemBindingGroup voorbeeld wordt het ItemsControl item zodanig ingesteld dat de ValidationRule, AreasMatchelk item wordt gevalideerd. In het voorbeeld wordt ook een Label validatiefout weergegeven. U ziet dat de waarde van de ContentLabel eigenschap afhankelijk is van een ValidationError eigenschap Validation.ValidationAdornerSiteForProperty . De waarde is Validation.ValidationAdornerSiteForProperty de itemcontainer met de fout.

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

In het volgende voorbeeld wordt de itemcontainer opgehaald en wordt de container UpdateSources aanroepen BindingGroup om de gegevens te valideren. U moet de gegevens valideren door een methode aan te roepen voor de itemcontainers BindingGroup, niet op de ItemBindingGroupItemsControl.

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

Opmerkingen

Wanneer u de ItemBindingGroup eigenschap instelt, krijgt elke itemcontainer een BindingGroup container met dezelfde ValidationRule objecten als de ItemBindingGroup, maar de eigenschappen die de gegevens in de bindingen beschrijven, zoals Items en BindingExpressions, zijn specifiek voor de gegevens voor elk item in het ItemsControl. U moet toegang krijgen tot de itemcontainers BindingGroup om bewerkingen uit te voeren, zoals het valideren van de gegevens en het controleren op fouten in een item.

Van toepassing op