Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

FrameworkElement.BindingGroup-Eigenschaft

Aktualisiert: September 2010

Ruft die für das Element verwendete BindingGroup ab oder legt diese fest.

Namespace:  System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[LocalizabilityAttribute(LocalizationCategory.NeverLocalize)]
public BindingGroup BindingGroup { get; set; }
<object>
  <object.BindingGroup>
    <BindingGroup .../>
  </object.BindingGroup>
</object>

Eigenschaftswert

Typ: System.Windows.Data.BindingGroup
Die für das Element verwendete BindingGroup.

Bezeichnerfeld

BindingGroupProperty

Auf true festgelegte Metadateneigenschaften

Inherits

Eine BindingGroup kann verwendet werden, um die Werte mehrerer Eigenschaften eines Objekts zu überprüfen. Angenommen, der Benutzer wird von einer Anwendung zur Eingabe einer Adresse aufgefordert, anschließend wird ein Objekt vom Typ Address mit den Eigenschaften Street, City, ZipCode und Country mit den vom Benutzer bereitgestellten Werten aufgefüllt. Die Anwendung enthält einen Bereich mit vier TextBox-Steuerelementen, die jeweils an eine der Eigenschaften des Objekts gebunden sind. Mit einer ValidationRule in einer BindingGroup können Sie die Gültigkeit des Address-Objekts überprüfen. Beispielsweise kann die ValidationRule sicherstellen, dass die Postleitzahl für das Land der Adresse gültig ist.

Untergeordnete Elemente erben die BindingGroup wie jede andere erbbare Eigenschaft von den übergeordneten Elementen.

Die folgenden Beispiele sind Teil einer Anwendung, die überprüft, ob der Benutzer die Eigenschaften zweier Objekte auf die gleichen Werte festgelegt hat. Im ersten Beispiel werden zwei TextBox-Steuerelemente erstellt, für die jeweils eine Bindung an eine andere Quelle besteht. StackPanel enthält eine BindingGroup, die über eine ValidationRule verfügt, die die beiden Zeichenfolgen auf Gleichheit überprüft.


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


Im folgenden Beispiel wird die im vorherigen Beispiel verwendete ValidationRule veranschaulicht. In der Validate-Methodenüberschreibung wird im Beispiel jedes Quellobjekt aus BindingGroup abgerufen und überprüft, ob die Eigenschaften der Objekte identisch sind.


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;

    }

}


Zum Aufrufen der ValidationRule rufen Sie die UpdateSources-Methode auf. Im folgenden Beispiel wird UpdateSources aufgerufen, wenn das Klickereignis der Schaltfläche auftritt.


private void Button_Click(object sender, RoutedEventArgs e)
{
    sp1.BindingGroup.UpdateSources();
}


.NET Framework

Unterstützt in: 4, 3.5 SP1, 3.0 SP2

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Datum

Versionsgeschichte

Grund

September 2010

Ein vollständigeres Beispiel wurde hinzugefügt.

Kundenfeedback.

Anzeigen: