ItemsControl.ItemBindingGroup Свойство

Определение

Возвращает или задает объект BindingGroup, который копируется в каждый элемент в объекте ItemsControl.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; }
member this.ItemBindingGroup : System.Windows.Data.BindingGroup with get, set
Public Property ItemBindingGroup As BindingGroup

Значение свойства

Объект BindingGroup, который копируется в каждый элемент в объекте ItemsControl.The BindingGroup that is copied to each item in the ItemsControl.

Атрибуты

Примеры

Следующий пример является частью приложения, которое предлагает пользователю ввести нескольких клиентов и назначить торгового представителя каждому клиенту, а затем проверяет, что торговый отдел и клиент принадлежат одному региону.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. В ItemBindingGroup примере задается ItemsControl , что ValidationRule AreasMatch,, будет проверять каждый элемент.The example sets the ItemBindingGroup of the ItemsControl so the ValidationRule, AreasMatch, will validate each item. В примере также создается объект Label , отображающий ошибки проверки.The example also creates a Label that displays validation errors. Обратите внимание Content , что Label свойство объекта привязано ValidationError к объекту, который он Validation.ValidationAdornerSiteForProperty получает из свойства.Notice that the Content of the Label is bound to a ValidationError that it gets from the Validation.ValidationAdornerSiteForProperty property. Значение Validation.ValidationAdornerSiteForProperty является контейнером элемента, который содержит ошибку.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"/>

В следующем примере показано получение контейнера элементов и вызовов UpdateSources в BindingGroup контейнере для проверки данных.The following example gets the item container and calls UpdateSources on the container's BindingGroup to validate the data. Необходимо проверить данные, вызвав метод в контейнере BindingGroupэлемента, а не ItemBindingGroup 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

Комментарии

При задании ItemBindingGroup свойства каждый контейнер элементов получает объект BindingGroup , имеющий ItemBindingGroupте же ValidationRule объекты, что и, но свойства, описывающие данные в привязках, такие как Items и BindingExpressions, являются относится к данным для каждого элемента в 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. Необходимо получить доступ к контейнеру BindingGroup элементов для выполнения таких операций, как проверка данных и проверка на наличие ошибок в элементе.You must access the item container's BindingGroup to perform operations such as validate the data and check for errors on an item.

Применяется к