ItemsControl.ItemBindingGroup Eigenschaft

Definition

Dient zum Abrufen oder Festlegen der BindingGroup, die in jedes Element im ItemsControl kopiert wird.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; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemBindingGroup : System.Windows.Data.BindingGroup with get, set
Public Property ItemBindingGroup As BindingGroup

Eigenschaftswert

BindingGroup

Die BindingGroup, die in jedes Element im ItemsControl kopiert wird.The BindingGroup that is copied to each item in the ItemsControl.

Attribute

Beispiele

Das folgende Beispiel ist Teil einer Anwendung, die den Benutzer auffordert, mehrere Kunden einzugeben und jedem Kunden einen Vertriebsmitarbeiter zuzuweisen, und dann prüft, ob der Vertriebsmitarbeiter und der Kunde derselben Region angehören.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. Im Beispiel wird die ItemBindingGroup des- ItemsControl Elements festgelegt ValidationRule , sodass AreasMatch jedes Element überprüft wird.The example sets the ItemBindingGroup of the ItemsControl so the ValidationRule, AreasMatch, will validate each item. Im Beispiel wird auch ein erstellt, in dem Label Validierungs Fehler angezeigt werden.The example also creates a Label that displays validation errors. Beachten Sie, dass der Content von Label an einen gebunden ist ValidationError , der von der-Eigenschaft abgerufen wird Validation.ValidationAdornerSiteForProperty .Notice that the Content of the Label is bound to a ValidationError that it gets from the Validation.ValidationAdornerSiteForProperty property. Der Wert von Validation.ValidationAdornerSiteForProperty ist der Element Container, in dem der Fehler aufgetreten ist.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"/>

Im folgenden Beispiel wird der Element Container abgerufen UpdateSources , und es wird aufgerufen BindingGroup , um die Daten über den Container zu validieren.The following example gets the item container and calls UpdateSources on the container's BindingGroup to validate the data. Sie müssen die Daten überprüfen, indem Sie eine Methode auf dem Element Container aufrufen BindingGroup , nicht auf der ItemBindingGroup von 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

Hinweise

Wenn Sie die- ItemBindingGroup Eigenschaft festlegen, ruft jeder Element Container ein-Objekt BindingGroup ab, das die gleichen ValidationRule Objekte wie hat ItemBindingGroup , aber die Eigenschaften, die die Daten in den Bindungen beschreiben, z Items . b BindingExpressions . und, sind spezifisch für die Daten der einzelnen Elemente in der 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. Sie müssen auf den Element Container zugreifen BindingGroup , um Vorgänge wie das Überprüfen der Daten und das Überprüfen auf Fehler eines Elements auszuführen.You must access the item container's BindingGroup to perform operations such as validate the data and check for errors on an item.

Gilt für: