Bagikan melalui


BindingBase.BindingGroupName Properti

Definisi

Mendapatkan atau mengatur nama tempat BindingGroup pengikatan ini berada.

public:
 property System::String ^ BindingGroupName { System::String ^ get(); void set(System::String ^ value); };
public string BindingGroupName { get; set; }
member this.BindingGroupName : string with get, set
Public Property BindingGroupName As String

Nilai Properti

Nama tempat BindingGroup pengikatan ini berada.

Contoh

Contoh berikut adalah bagian dari aplikasi yang memeriksa apakah pengguna telah mengatur properti dua objek ke nilai yang sama. Contoh pertama membuat dua TextBox kontrol, yang masing-masing terikat ke sumber yang berbeda: Pengikatan yang pertama TextBox adalah bagian BindingGroup dari karena TextBox mewarisi DataContext dan BindingGroup dari induknya StackPanel

Pengikatan pada yang kedua TextBox adalah bagian dari BindingGroup karena Name dan BindingGroupBindingGroupName dari Binding keduanya diatur ke bindingGroup.

<StackPanel Name="sp1"
            Margin="5"
            DataContext="{Binding Source={StaticResource object1}}"
            Validation.ValidationAdornerSite="{Binding ElementName=label1}"
            Orientation="Horizontal"
            HorizontalAlignment="Center">

  <StackPanel.BindingGroup>
    <BindingGroup Name="bindingGroup">
      <BindingGroup.ValidationRules>
        <src:BindingGroupValidationRule ValidatesOnTargetUpdated="True" />
      </BindingGroup.ValidationRules>
    </BindingGroup>
  </StackPanel.BindingGroup>

  <TextBlock Text="First string" />

  <TextBox Width="150"
           Text="{Binding Path=PropertyA}" />

  <TextBlock Text="Second string" />

  <TextBox Width="150"
           Text="{Binding Source={StaticResource object2}, 
    Path=PropertyB, BindingGroupName=bindingGroup, 
    TargetNullValue=please enter a string}" />

</StackPanel>
<Label Name="label1"
       Content="{Binding ElementName=sp1, Path=(Validation.Errors)[0].ErrorContent}"
       Margin="5"
       Foreground="Red"
       HorizontalAlignment="Center" />

Contoh berikut menunjukkan ValidationRule bahwa contoh sebelumnya menggunakan. Dalam metode , Validate contoh mendapatkan setiap objek sumber dari BindingGroup dan memeriksa apakah properti objek sama.

public class Type1
{
    public string PropertyA { get; set; }

    public Type1()
    {
        PropertyA = "Default Value";
    }
}

public class Type2
{
    public string PropertyB { get; set; }

    public Type2()
    {
    }
}

public class BindingGroupValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        BindingGroup bg = value as BindingGroup;

        Type1 object1 = null;
        Type2 object2 = null;

        foreach (object item in bg.Items)
        {
            if (item is Type1)
            {
                object1 = item as Type1;
            }

            if (item is Type2)
            {
                object2 = item as Type2;
            }
        }

        if (object1 == null || object2 == null)
        {
            return new ValidationResult(false, "BindingGroup did not find source object.");
        }

        string string1 = bg.GetValue(object1, "PropertyA") as string;
        string string2 = bg.GetValue(object2, "PropertyB") as string;

        if (string1 != string2)
        {
            return new ValidationResult(false, "The two strings must be identical.");
        }

        return ValidationResult.ValidResult;
    }
}
Public Class Type1
    Public Property PropertyA() As String

    Public Sub New()
        PropertyA = "Default Value"
    End Sub
End Class

Public Class Type2
    Public Property PropertyB() As String

    Public Sub New()
    End Sub
End Class

Public Class BindingGroupValidationRule
    Inherits ValidationRule
    Public Overrides Function Validate(ByVal value As Object, ByVal cultureInfo As System.Globalization.CultureInfo) As ValidationResult
        Dim bg As BindingGroup = TryCast(value, BindingGroup)

        Dim object1 As Type1 = Nothing
        Dim object2 As Type2 = Nothing

        For Each item As Object In bg.Items
            If TypeOf item Is Type1 Then
                object1 = TryCast(item, Type1)
            End If

            If TypeOf item Is Type2 Then
                object2 = TryCast(item, Type2)
            End If
        Next item

        If object1 Is Nothing OrElse object2 Is Nothing Then
            Return New ValidationResult(False, "BindingGroup did not find source object.")
        End If

        Dim string1 As String = TryCast(bg.GetValue(object1, "PropertyA"), String)
        Dim string2 As String = TryCast(bg.GetValue(object2, "PropertyB"), String)

        If string1 <> string2 Then
            Return New ValidationResult(False, "The two strings must be identical.")
        End If

        Return ValidationResult.ValidResult

    End Function

End Class

Keterangan

Jika BindingGroupName tidak diatur, pengikatan milik BindingGroup hanya jika sumber pengikatan dan DataContext elemen induk yang memiliki BindingGroup objek yang sama.

Jika BindingGroupName diatur ke nilai, pengikatan termasuk BindingGroup dalam jika kondisi berikut ini benar:

Jika BindingGroupName diatur ke null, pengikatan tidak pernah menjadi bagian BindingGroupdari .

Anda dapat menyertakan pengikatan yang memiliki sumber yang berbeda dari DataContext elemen induk yang memiliki BindingGroup dengan pengaturan NameBindingGroup dan BindingGroupName properti pengikatan ke nilai yang sama. Anda dapat mengecualikan pengikatan yang memiliki sumber DataContext yang sama dengan elemen induk yang memiliki BindingGroup dengan pengaturan NameBindingGroup dan BindingGroupName properti pengikatan ke nilai yang berbeda.

Berlaku untuk