FrameworkElement.BindingGroup 속성

정의

요소에 사용되는 BindingGroup을 가져오거나 설정합니다.Gets or sets the BindingGroup that is used for the element.

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; }
member this.BindingGroup : System.Windows.Data.BindingGroup with get, set
Public Property BindingGroup As BindingGroup

속성 값

요소에 사용되는 BindingGroup입니다.The BindingGroup that is used for the element.

특성

예제

다음 예제는 사용자가 값과 동일 하 게 두 개체의 속성을 설정 하는지 여부를 확인 하는 애플리케이션의 일부입니다.The following examples are part of an application that checks whether the user has set the properties of two objects to equal values. 첫 번째 예제에서는 각각 다른 데이터 소스에 바인딩된 두 개의 TextBox 컨트롤을 만듭니다.The first example creates two TextBox controls, each of which is bound to a different data source. StackPanel에는 두 문자열이 같은지 확인 하는 ValidationRule를 포함 하는 BindingGroup 있습니다.The StackPanel has a BindingGroup that contains a ValidationRule that checks that the two strings are equal.

<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 앞의 예제를 사용 하는 합니다.The following example shows the ValidationRule that the previous example uses. Validate 메서드 재정의에서 예제는 BindingGroup에서 각 원본 개체를 가져오고 개체의 속성이 같은지 여부를 확인 합니다.In the Validate method override, the example gets each source object from the BindingGroup and checks whether the properties of the objects are equal.

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 메서드를 호출 합니다.To invoke the ValidationRule, call the UpdateSources method. 다음 예에서는 단추의 click 이벤트가 발생 하는 경우 UpdateSources를 호출 합니다.The following example calls UpdateSources when the click event of the button occurs.

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

설명

BindingGroup를 사용 하 여 개체의 여러 속성 값에 대 한 유효성을 검사할 수 있습니다.A BindingGroup can be used to validate the values of multiple properties of an object. 예를 들어 애플리케이션 주소를 입력 하 라는 메시지를 다음 형식의 개체를 채웁니다 Address, 속성이 있는 Street, City, ZipCode, 및 Country, 값을 사용 하는 사용자 제공 합니다.For example, suppose that an application prompts the user to enter an address and then populates an object of type Address, which has the properties Street, City, ZipCode, and Country, with the values that the user provided. 애플리케이션에 4 개를 포함 하는 패널 TextBox 개체의 속성 중 하나에 바인딩되는 컨트롤입니다.The application has a panel that contains four TextBox controls, each of which is bound to one of the object's properties. 사용할 수는 ValidationRuleBindingGroup 유효성을 검사 하는 Address 개체.You can use a ValidationRule in a BindingGroup to validate the Address object. 예를 들어 ValidationRule는 우편 번호가 주소의 국가/지역에 대해 유효한 지 확인할 수 있습니다.For example, the ValidationRule can ensure that the zip code is valid for the country/region of the address.

자식 요소에서 상속 된 BindingGroup 다른 상속 가능한 속성에서와 마찬가지로 해당 부모 요소에서.Child elements inherit the BindingGroup from their parent elements, just as with any other inheritable property.

종속성 속성 정보Dependency Property Information

식별자 필드Identifier field BindingGroupProperty
메타 데이터 속성 설정 trueMetadata properties set to true Inherits

적용 대상