ItemsControl.ItemBindingGroup Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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ı denetleen bir uygulamanın parçasıdır. Örnek öğesini ayarlar ItemBindingGroupItemsControl , böylece ValidationRule, AreasMatch, her öğeyi doğrular. Örnek ayrıca doğrulama hatalarını görüntüleyen bir Label de oluşturur. öğesinin ContentLabel özelliğinden Validation.ValidationAdornerSiteForProperty aldığı öğesine ValidationError bağlı olduğuna dikkat edin. değeri Validation.ValidationAdornerSiteForProperty , hataya sahip öğ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 her öğenin ItemsControlverilerine özgüdür. Verileri doğrulama ve bir öğedeki hataları denetleme gibi işlemleri gerçekleştirmek için öğe kapsayıcılarına BindingGroup erişmeniz gerekir.