ItemsControl.ItemBindingGroup Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau mengatur BindingGroup yang disalin ke setiap item di 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
Nilai Properti
BindingGroup yang disalin ke setiap item di ItemsControl.
- Atribut
Contoh
Contoh berikut adalah bagian dari aplikasi yang meminta pengguna untuk memasukkan beberapa pelanggan dan menetapkan perwakilan penjualan untuk setiap pelanggan, lalu memeriksa bahwa perwakilan penjualan dan pelanggan termasuk dalam wilayah yang sama. Contoh mengatur ItemBindingGroup dari ItemsControl sehingga ValidationRule, , AreasMatch
akan memvalidasi setiap item. Contoh ini juga membuat Label yang menampilkan kesalahan validasi. Perhatikan bahwa Content dari Label terikat dengan ValidationError yang didapatkannya dari Validation.ValidationAdornerSiteForProperty properti . Nilai adalah Validation.ValidationAdornerSiteForProperty kontainer item yang memiliki kesalahan.
<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"/>
Contoh berikut mendapatkan kontainer item dan panggilan UpdateSources pada kontainer BindingGroup untuk memvalidasi data. Anda harus memvalidasi data dengan memanggil metode pada kontainer BindingGroupitem , bukan pada ItemBindingGroup dari 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
Keterangan
Saat Anda mengatur ItemBindingGroup properti , setiap kontainer item mendapatkan BindingGroup yang memiliki objek yang sama ValidationRule dengan ItemBindingGroup, tetapi properti yang menjelaskan data dalam pengikatan, seperti Items dan BindingExpressions, khusus untuk data untuk setiap item di ItemsControl. Anda harus mengakses kontainer BindingGroup item untuk melakukan operasi seperti memvalidasi data dan memeriksa kesalahan pada item.