Aracılığıyla paylaş


ItemsControl.ItemBindingGroup Özellik

Tanım

içindeki ItemsControlher öğeye kopyalanan öğesini alır veya ayarlarBindingGroup.

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

Özellik Değeri

içindeki BindingGroup her öğeye ItemsControlkopyalanan.

Öznitelikler

Örnekler

Aşağıdaki örnek, kullanıcıdan birden çok müşteri girmesini ve her müşteriye bir satış temsilcisi atamasını isteyen ve ardından satış temsilcisiyle müşterinin aynı bölgeye ait olup olmadığını denetleyan bir uygulamanın parçasıdır. Örnek öğesinin öğesini, öğesinin her öğeyi ValidationRuledoğrulayacak şekilde ayarlar.ItemBindingGroupItemsControlAreasMatch Örnek ayrıca doğrulama hatalarını görüntüleyen bir Label de oluşturur. öğesinin ContentLabel özelliğinden Validation.ValidationAdornerSiteForProperty aldığı bir ValidationError öğesine bağlı olduğuna dikkat edin. değeri Validation.ValidationAdornerSiteForProperty , hatasını içeren öğe kapsayıcısıdır.

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

Aşağıdaki örnek öğe kapsayıcısını alır ve verileri doğrulamak için kapsayıcıyı BindingGroup çağırırUpdateSources. öğesinin üzerinde değil ItemBindingGroupItemsControl, öğe kapsayıcısının BindingGroupüzerinde bir yöntem çağırarak verileri doğrulamanız gerekir.

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

Açıklamalar

özelliğini ayarladığınızdaItemBindingGroup, her öğe kapsayıcısı ile aynı ValidationRule nesnelere ItemBindingGroupsahip olan bir BindingGroup alır, ancak bağlamalardaki verileri açıklayan ve BindingExpressionsgibi Items özellikler içindeki ItemsControlher öğenin verilerine özgüdür. Verileri doğrulama ve bir öğedeki hataları denetleme gibi işlemleri gerçekleştirmek için öğe kapsayıcısına BindingGroup erişmeniz gerekir.

Şunlara uygulanır