Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

FrameworkElement.BindingGroup-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft ab oder legt die BindingGroup , die für das Element verwendet wird.

Namespace:   System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)

[LocalizabilityAttribute(LocalizationCategory.NeverLocalize)]
public BindingGroup BindingGroup { get; set; }

Eigenschaftswert

Type: System.Windows.Data.BindingGroup

Die BindingGroup , die für das Element verwendet wird.

Ein BindingGroup zum Überprüfen der Werte von mehreren Eigenschaften eines Objekts verwendet werden können. Nehmen wir beispielsweise an, dass eine Anwendung den Benutzer fordert auf eine Adresse eingeben, und dann ein Objekt des Typs füllt Address, die über die Eigenschaften verfügt Street, City, ZipCode, und Country, mit den Werten, die der Benutzer bereitgestellt. Die Anwendung verfügt über einen Bereich, vier enthält TextBox Steuerelemente, von denen jedes an eine der Eigenschaften des Objekts gebunden ist. Können Sie eine ValidationRule in einem BindingGroup zum Überprüfen der Address Objekt. Z. B. die ValidationRule können sicherstellen, dass die Postleitzahl für das Land der Adresse gültig ist.

Untergeordnete Elemente erben die BindingGroup von den übergeordneten Elementen, genauso wie bei jeder anderen vererbbare Eigenschaft.

Bezeichnerfeld

BindingGroupProperty

Festgelegte Metadateneigenschaften "true"

Inherits

In den folgenden Beispielen sind Teil einer Anwendung, die überprüft, ob der Benutzer die Eigenschaften von zwei Objekten, auf die gleichen Werte festgelegt hat. Im erste Beispiel erstellt zwei TextBox Steuerelemente, von denen jeder mit einer anderen Datenquelle gebunden ist. Die StackPanel verfügt über eine BindingGroup , enthält eine ValidationRule , die überprüft, dass die beiden Zeichenfolgen gleich sind.

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

Das folgende Beispiel zeigt die ValidationRule , die im vorherigen Beispiel verwendet. In der Validate methodenüberschreibung, im Beispiel ruft jede Quellobjekts, aus der BindingGroup und überprüft, ob die Eigenschaften der Objekte gleich 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. Im folgenden Beispiel wird UpdateSources tritt das Click-Ereignis der Schaltfläche.

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

.NET Framework
Verfügbar seit 3.0
Zurück zum Anfang
Anzeigen: