ItemsControl.ItemBindingGroup Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Dient zum Abrufen oder Festlegen der BindingGroup, die in jedes Element im ItemsControl kopiert wird.
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
Die BindingGroup, die in jedes Element im ItemsControl kopiert wird.
- Attribute
Beispiele
Das folgende Beispiel ist Teil einer Anwendung, die den Benutzer auffordert, mehrere Kunden einzugeben und jedem Kunden einen Vertriebsmitarbeiter zuzuweisen, und dann überprüft, ob der Vertriebsmitarbeiter und der Kunde derselben Region angehören. Im Beispiel wird festgelegt ItemBindingGroupItemsControl , sodass , ValidationRule, AreasMatch
jedes Element überprüft wird. Im Beispiel wird auch ein Label erstellt, das Überprüfungsfehler anzeigt. Beachten Sie, dass der Content von an ein ValidationError gebunden ist, das es von der Validation.ValidationAdornerSiteForPropertyLabel -Eigenschaft erhält. Der Wert von Validation.ValidationAdornerSiteForProperty ist der Elementcontainer, der den Fehler aufweist.
<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 Elementcontainer abgerufen und der Container BindingGroup aufgerufenUpdateSources, um die Daten zu überprüfen. Sie müssen die Daten überprüfen, indem Sie eine -Methode für den -Elementcontainer BindingGroupaufrufen, nicht für das ItemBindingGroup des 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, erhält jeder Elementcontainer einen BindingGroup , der die gleichen ValidationRule Objekte wie das ItemBindingGroupenthält, aber die Eigenschaften, die die Daten in den Bindungen beschreiben, wie Items z. B. und BindingExpressions, sind spezifisch für die Daten für jedes Element im ItemsControl. Sie müssen auf die Elementcontainer BindingGroup zugreifen, um Vorgänge wie die Überprüfung der Daten und die Überprüfung auf Fehler für ein Element auszuführen.