Bagikan melalui


ItemsControl.ItemBindingGroup Properti

Definisi

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, , AreasMatchakan 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.

Berlaku untuk