ItemsControl.ItemBindingGroup Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define a BindingGroup que é copiada para cada item na 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
Valor da propriedade
A BindingGroup que é copiada para cada item na ItemsControl.
- Atributos
Exemplos
O exemplo a seguir faz parte de um aplicativo que solicita que o usuário insira vários clientes e atribua um representante de vendas a cada cliente e verifica se o representante de vendas e o cliente pertencem à mesma região. O exemplo define o ItemBindingGroupItemsControl de para que o ValidationRule, AreasMatch
, valide cada item. O exemplo também cria um Label que exibe erros de validação. Observe que o Content do Label está associado a um ValidationError que ele obtém da Validation.ValidationAdornerSiteForProperty propriedade . O valor de é o contêiner de Validation.ValidationAdornerSiteForProperty item que tem o erro.
<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"/>
O exemplo a seguir obtém o contêiner de item e chama UpdateSources no contêiner BindingGroup para validar os dados. Você deve validar os dados chamando um método no contêiner do BindingGroupitem, não no ItemBindingGroup do 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
Comentários
Quando você define a ItemBindingGroup propriedade , cada contêiner de item obtém um BindingGroup que tem os mesmos ValidationRule objetos que o ItemBindingGroup, mas as propriedades que descrevem os dados nas associações, como Items e BindingExpressions, são específicas para os dados de cada item no ItemsControl. Você deve acessar o contêiner do BindingGroup item para executar operações como validar os dados e marcar para erros em um item.