ItemsControl.ItemBindingGroup Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.