FrameworkElement.BindingGroup 속성

정의

요소에 BindingGroup 사용되는 값을 가져오거나 설정합니다.

public:
 property System::Windows::Data::BindingGroup ^ BindingGroup { System::Windows::Data::BindingGroup ^ get(); void set(System::Windows::Data::BindingGroup ^ value); };
[System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)]
public System.Windows.Data.BindingGroup BindingGroup { get; set; }
[<System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)>]
member this.BindingGroup : System.Windows.Data.BindingGroup with get, set
Public Property BindingGroup As BindingGroup

속성 값

BindingGroup 요소에 사용되는 값입니다.

특성

예제

다음 예제는 사용자가 두 개체의 속성을 같은 값으로 설정했는지 여부를 확인하는 애플리케이션의 일부입니다. 첫 번째 예제에서는 각각 다른 데이터 원본에 바인딩된 두 개의 TextBox 컨트롤을 만듭니다. StackPanel BindingGroup 두 문자열이 같은지 확인하는 해당 문자열이 포함되어 ValidationRule 있습니다.

<StackPanel>
  <StackPanel.Resources>
    <src:Type1 x:Key="object1" />
    <src:Type2 x:Key="object2" />
  </StackPanel.Resources>

  <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" />

  <Button HorizontalAlignment="Center"
          Click="Button_Click"
          IsDefault="True">
    _Submit
  </Button>

  <StackPanel Orientation="Horizontal">
    <TextBlock Text="First string:"
               FontWeight="Bold" />
    <TextBlock Text="{Binding Source={StaticResource object1}, 
      Path=PropertyA, TargetNullValue=--}" />
  </StackPanel>

  <StackPanel Orientation="Horizontal">
    <TextBlock Text="Second string:"
               FontWeight="Bold" />
    <TextBlock Text="{Binding Source={StaticResource object2}, 
      Path=PropertyB, TargetNullValue=--}" />
  </StackPanel>
</StackPanel>

다음 예제에서는 이전 예제에서 ValidationRule 사용하는 것을 보여 주는 예제입니다. 메서드 재정의 Validate 에서 예제에서는 각 원본 개체를 가져오 BindingGroup 고 개체의 속성이 같은지 여부를 확인합니다.

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

호출 ValidationRule하려면 메서드를 호출합니다 UpdateSources . 다음은 단추의 클릭 이벤트가 발생할 때 호출 UpdateSources 하는 예제입니다.

private void Button_Click(object sender, RoutedEventArgs e)
{
    sp1.BindingGroup.UpdateSources();
}
Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    sp1.BindingGroup.UpdateSources()
End Sub

설명

A를 BindingGroup 사용하여 개체의 여러 속성 값에 대한 유효성을 검사할 수 있습니다. 예를 들어 애플리케이션에서 사용자에게 주소를 입력하라는 메시지를 표시한 다음 속성AddressStreetCityZipCode이 있는 형식Country의 개체를 사용자가 제공한 값으로 채웁니다. 애플리케이션에는 각각 개체의 속성 중 하나에 바인딩된 4개의 TextBox 컨트롤이 포함된 패널이 있습니다. a ValidationRule 에서 BindingGroup 개체의 유효성을 검사 Address 할 수 있습니다. 예를 들어 ValidationRule 우편 번호가 주소의 국가/지역에 대해 유효한지 확인할 수 있습니다.

자식 요소는 다른 상속 가능한 속성과 마찬가지로 부모 요소에서 상속 BindingGroup 됩니다.

종속성 속성 정보

항목 가치
식별자 필드 BindingGroupProperty
메타데이터 속성이 다음으로 설정됩니다. true Inherits

적용 대상