(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

BindingGroup-Klasse

Enthält eine Auflistung von Bindungen und ValidationRule-Objekten, die verwendet werden, um ein Objekt zu validieren.

Namespace:  System.Windows.Data
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

public class BindingGroup : DependencyObject

Der BindingGroup-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeBindingGroupInitialisiert eine neue Instanz der BindingGroup-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftBindingExpressionsRuft eine Auflistung BindingExpression-Objekten ab, die Informationen für jede Bindung in BindingGroupenthält.
Öffentliche EigenschaftCanRestoreValuesRuft ab, ob jede Quelle in der Bindung ausstehende Änderungen verwerfen und die ursprünglichen Werte wiederherstellen kann.
Öffentliche EigenschaftDependencyObjectTypeRuft den DependencyObjectType ab, der den CLR-Typ dieser Instanz umschließt.  (Von DependencyObject geerbt.)
Öffentliche EigenschaftDispatcherRuft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist. (Von DispatcherObject geerbt.)
Öffentliche EigenschaftHasValidationErrorRuft einen Wert ab, der angibt, ob BindingGroup eine fehlerhafte Validierungsregel aufweist.
Öffentliche EigenschaftIsDirtyRuft einen Wert ab oder legt einen Wert fest, der angibt, ob BindingGroup einen vorgeschlagenen Wert enthält, der nicht in der Quelle geschrieben wurde.
Öffentliche EigenschaftIsSealedRuft einen Wert ab, der angibt, ob diese Instanz derzeit versiegelt (schreibgeschützt) ist. (Von DependencyObject geerbt.)
Öffentliche EigenschaftItemsRuft die Quelle ab, die von den Bindungsobjekten in BindingGroupverwendet werden.
Öffentliche EigenschaftNameRuft den Text ab bzw. legt den Namen fest, der BindingGroupidentifiziert, die verwendet werden kann, um Bindungsobjekten in BindingGroupeinzuschließen und auszuschließen.
Öffentliche EigenschaftNotifyOnValidationErrorRuft ab oder legt fest, ob das Validation.Error-Ereignis eintritt, wenn der Zustand von ValidationRule ändert.
Öffentliche EigenschaftOwnerRuft das Objekt ab, dem dieses BindingGroup zugewiesen ist.
Öffentliche EigenschaftSharesProposedValuesRuft einen Wert ab oder legt einen Wert fest, der angibt, ob BindingGroup Zielwerte wiederverwendet, die nicht an die Quelle übertragen wurden.
Öffentliche EigenschaftValidatesOnNotifyDataErrorRuft einen Wert ab oder legt einen Wert fest, der angibt, ob NotifyDataErrorValidationRuleeinschließt.
Öffentliche EigenschaftValidationErrorsRuft eine Auflistung der Objekte ab, die ValidationError veranlaßten BindingGroup ungültig ist.
Öffentliche EigenschaftValidationRulesRuft eine Auflistung ValidationRule-Objekten ab, die die Quellobjekte in BindingGroupüberprüfen.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeBeginEditStartet eine Bearbeitungstransaktion für den Quellen in BindingGroup.
Öffentliche MethodeCancelEditBeendet die Transaktion zum Bearbeiten und verwirft die ausstehenden Änderungen.
Öffentliche MethodeCheckAccessBestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann. (Von DispatcherObject geerbt.)
Öffentliche MethodeClearValue(DependencyProperty)Löscht den lokalen Wert einer Eigenschaft. Die zu löschende Eigenschaft wird mit einem DependencyProperty-Bezeichner angegeben. (Von DependencyObject geerbt.)
Öffentliche MethodeClearValue(DependencyPropertyKey)Löscht den lokalen Wert einer schreibgeschützten Eigenschaft. Die zu löschende Eigenschaft wird mit einem DependencyPropertyKey angegeben. (Von DependencyObject geerbt.)
Öffentliche MethodeCoerceValueWandelt den Wert der angegebenen Abhängigkeitseigenschaft um. Für die Umwandlung wird eine vorhandene CoerceValueCallback-Funktion aufgerufen, die in den Metadaten der Abhängigkeitseigenschaft für das aufrufende DependencyObject angegeben ist. (Von DependencyObject geerbt.)
Öffentliche MethodeCommitEditFührt alle ValidationRule-Objekte aus und aktualisiert die Bindungsquellen, wenn alle Validierungsregeln erfolgreich ausgeführt wurden.
Öffentliche MethodeEqualsBestimmt, ob ein angegebenes DependencyObject dem aktuellen DependencyObject entspricht. (Von DependencyObject geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGetHashCodeRuft einen Hashcode für dieses DependencyObject ab. (Von DependencyObject geerbt.)
Öffentliche MethodeGetLocalValueEnumeratorErstellt einen spezialisierten Enumerator, mit dem bestimmt wird, welche Abhängigkeitseigenschaften dieses DependencyObject über lokal festgelegte Werte verfügen. (Von DependencyObject geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeGetValue(DependencyProperty)Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft in dieser Instanz eines DependencyObject zurück. (Von DependencyObject geerbt.)
Öffentliche MethodeGetValue(Object, String)Gibt den vorgeschlagenen Wert für die angegebene Eigenschaft und das Element zurück.
Öffentliche MethodeInvalidatePropertyBerechnet den effektiven Wert für die angegebene Abhängigkeitseigenschaft neu (Von DependencyObject geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte MethodeOnPropertyChangedWird immer dann aufgerufen, wenn der tatsächliche Wert einer Abhängigkeitseigenschaft eines DependencyObject aktualisiert wurde. Die spezifische Abhängigkeitseigenschaft, die sich geändert hat, wird in den Ereignisdaten angegeben. (Von DependencyObject geerbt.)
Öffentliche MethodeReadLocalValueGibt, sofern vorhanden, den lokalen Wert einer Abhängigkeitseigenschaft zurück. (Von DependencyObject geerbt.)
Öffentliche MethodeSetCurrentValueLegt den Wert einer -Abhängigkeitseigenschaft fest, ohne die Wertquelle zu ändern. (Von DependencyObject geerbt.)
Öffentliche MethodeSetValue(DependencyProperty, Object)Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die über ihren Bezeichner angegeben wird. (Von DependencyObject geerbt.)
Öffentliche MethodeSetValue(DependencyPropertyKey, Object)Legt den lokalen Wert einer schreibgeschützten Abhängigkeitseigenschaft fest, die über ihren DependencyPropertyKey-Bezeichner angegeben wird. (Von DependencyObject geerbt.)
Geschützte MethodeShouldSerializePropertyGibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert der bereitgestellten Abhängigkeitseigenschaft serialisieren sollen. (Von DependencyObject geerbt.)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Öffentliche MethodeTryGetValueVersucht, den vorgeschlagenen Wert für die angegebene Eigenschaft und das Element abgerufen werden soll.
Öffentliche MethodeUpdateSourcesFührt den Konverter für die Bindung und den ValidationRule-Objekten aus, die den ValidationStep-Eigenschaft auf RawProposedValue, ConvertedProposedValueoder UpdatedValue besitzen und die Werte der Ziele für Quellobjekte verwendet den zu speichern, wenn alle Validierungsregeln erfolgreich ausgeführt wurden.
Öffentliche MethodeValidateWithoutUpdateFührt den Konverter für die Bindung und den ValidationRule-Objekten aus, die den ValidationStep-Eigenschaft auf RawProposedValue oder ConvertedProposedValuehaben.
Öffentliche MethodeVerifyAccessErzwingt, dass der aufrufende Thread auf dieses DispatcherObject zugreifen kann. (Von DispatcherObject geerbt.)
Zum Seitenanfang

BindingGroup erstellt eine Beziehung zwischen mehrere Bindungen, die zusammen überprüft und aktualisiert werden können. Angenommen, eine Anwendung den Benutzer auffordert, eine Adresse einzugeben. Die Anwendung wird dann ein Objekt des Typs Address, der die Eigenschaften, Street, City, ZipCodeund Countryverfügt, mit den Werten, die der Benutzer voraussetzte. Die Anwendung verfügt über einen Bereich, der vier TextBox-Steuerelemente enthält, von denen jede eine der Eigenschaften des Objekts gebunden ist. Sie können ValidationRule in BindingGroup verwenden, um das Address-Objekt verglichen werden soll. Wenn die Bindungen an demselben BindingGroupbeteiligt sind, können Sie sicherstellen, dass die Postleitzahl für das Land der Adresse gültig ist.

Festlegen der BindingGroup-Eigenschaft auf FrameworkElement oder FrameworkContentElement. Untergeordnete Elemente erben BindingGroup Verbindung mit ihren übergeordneten Elementen, so wie bei jeder anderen vererbbaren Eigenschaft. Eine Bindung auf einem untergeordneten Element wird auf BindingGroup hinzugefügt, wenn eine der folgenden Situationen auftritt:

Im Beispiel der Adresse, wird angenommen, dass DataContextPanel auf das Objekt vom Typ Addressfestgelegt ist. Die Bindung für jedes TextBox wird auf BindingGroup des Bereichs hinzugefügt.

Fügen Sie ValidationRuleBindingGroupObjekte hinzu. BindingGroup wird als ersten Parameter der Methode übergeben, wenn ValidateValidationRule ausgeführt wird. Sie können die TryGetValue oder GetValue(Object, String)-Methode für dieses BindingGroup verwenden, um die vorgeschlagenen Werte des Objekts abzurufen und die Items-Eigenschaft, um die Quellen der Bindungen abzurufen.

BindingGroup aktualisiert die Quelle der Bindung gleichzeitig statt jeder Bindung, die separat aktualisiert wird. Wenn Sie eine der Methoden aufrufen, um die Daten (ValidateWithoutUpdate, UpdateSourcesoder CommitEdit) zu überprüfen, wird die Bindung für jedes TextBox im Beispiel überprüft und aktualisiert werden. Wenn eine Bindung ein Teil von BindingGroupist, wird die Quelle der Bindung nicht aktualisiert, wenn Sie UpdateSources oder CommitEdit auf BindingGroupaufrufen, es sei denn, Sie explizit die UpdateSourceTrigger-Eigenschaft festlegen.

Die folgenden Beispiele erstellen eine Anwendung, der den Benutzer auffordert, die Beschreibung und den Preis eines Elements und des Datums, das das bieten abläuft. Die Anwendung zeigt die aktuellen Informationen für das Element unterhalb des Formulars auf. Der Benutzer kann dann die Änderungen senden oder abbrechen.

Die Anwendung führt Folgendes aus, um dieses Verhalten zu erreichen.

  • Erstellt BindingGroup und fügt es der Stamm StackPanel hinzu, wenn er Benutzeroberfläche (user interface, UI) der Anwendung erstellt. 

  • Ruft BeginEdit, CommitEditund CancelEdit in der Logik der Anwendung auf, um das Zurücksetzen von Änderungen zu ermöglichen.

  • Aufrufe TryGetValue in einer dann zu überprüfen Validate-Methode zum Abrufen der Benutzereingabe und ob ein Element über 100 Dollar für mindestens sieben Tage verfügbar ist.

Im folgenden Beispiel wird Benutzeroberfläche (user interface, UI) der Anwendung. Der Stamm StackPanel hat BindingGroup, der ValidationRule, das das Element validiert, wie zuvor beschrieben. Die Bindungsobjekten in der Price-Eigenschaft und der OfferExpires-Eigenschaft werden zu einem Teil BindingGroup und jede Bindung verfügt ValidationRule, sicherstellen, dass jeweils gültigen Werten date und Preis. Die Validierungsregeln für die einzelnen Eigenschaften aufValidationRule vor Ausführung BindingGroup.


<StackPanel Name="stackPanel1"  Margin="10" Width="250"
            Loaded="stackPanel1_Loaded"
            Validation.Error="ItemError">

  <StackPanel.Resources>
    <Style TargetType="HeaderedContentControl">
      <Setter Property="Margin" Value="2"/>
      <Setter Property="Focusable" Value="False"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="HeaderedContentControl">
            <DockPanel LastChildFill="False">
              <ContentPresenter ContentSource="Header" DockPanel.Dock="Left" Focusable="False" VerticalAlignment="Center"/>
              <ContentPresenter ContentSource="Content" Margin="5,0,0,0" DockPanel.Dock="Right" VerticalAlignment="Center"/>
            </DockPanel>

          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>

    <Style TargetType="Button">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Margin" Value="10,15,15,15"/>

    </Style>

  </StackPanel.Resources>

  <StackPanel.BindingGroup>
    <BindingGroup NotifyOnValidationError="True">
      <BindingGroup.ValidationRules>
        <src:ValidateDateAndPrice ValidationStep="ConvertedProposedValue" />
      </BindingGroup.ValidationRules>
    </BindingGroup>
  </StackPanel.BindingGroup>

  <TextBlock FontSize="14" Text="Enter an item for sale"/>
  <HeaderedContentControl Header="Description">
    <TextBox Width="150" Text="{Binding Path=Description, Mode=TwoWay}"/>
  </HeaderedContentControl>
  <HeaderedContentControl Header="Price">
    <TextBox Name="priceField"  Width="150">
      <TextBox.Text>
        <Binding Path="Price" Mode="TwoWay" >
          <Binding.ValidationRules>
            <src:PriceIsAPositiveNumber/>
          </Binding.ValidationRules>
        </Binding>
      </TextBox.Text>
    </TextBox>
  </HeaderedContentControl>
  <HeaderedContentControl Header="Date Offer Ends">
    <TextBox Name="dateField" Width="150" >
      <TextBox.Text>
        <Binding Path="OfferExpires" StringFormat="d" >
          <Binding.ValidationRules>
            <src:FutureDateRule/>
          </Binding.ValidationRules>
        </Binding>
      </TextBox.Text>
    </TextBox>
  </HeaderedContentControl>
  <StackPanel Orientation="Horizontal">
    <Button IsDefault="True" Click="Submit_Click">_Submit</Button>
    <Button IsCancel="True" Click="Cancel_Click">_Cancel</Button>
  </StackPanel>
  <HeaderedContentControl Header="Description">
    <TextBlock Width="150" Text="{Binding Path=Description}"/>
  </HeaderedContentControl>
  <HeaderedContentControl Header="Price">
    <TextBlock Width="150" Text="{Binding Path=Price, StringFormat=c}"/>
  </HeaderedContentControl>
  <HeaderedContentControl Header="Date Offer Ends">
    <TextBlock Width="150" Text="{Binding Path=OfferExpires, StringFormat=d}"/>
  </HeaderedContentControl>
</StackPanel>


Im folgenden Beispiel wird der Ereignishandler für die Anwendung an. Wenn der Benutzer auf die Schaltfläche Senden klickt, ruft die Anwendung CommitEdit an, um jedes ValidationRule auszuführen, die BindingGroupzugeordnet ist. Wenn jedes ValidationRule folgt, speichert CommitEdit die Werte auf das Objekt, und beendet die Bearbeitungstransaktion. Wenn CommitEdit erfolgreich ist, wird die Anwendung eine andere Transaktion zum Bearbeiten. Wenn ValidationRule fehlschlägt, wird das Ereignis Validation.Error da die Anwendung zu NotifyOnValidationError festlegen true auf BindingGroup (im vorherigen Beispiel). ItemError behandelt das Validation.Error-Ereignis und zeigt Informationen zu den Validierungsfehlern für den Benutzer an. Im Beispiel wird auch das Loaded-Ereignis für StackPanel und das Click-Ereignis für die Abbrechen Schaltfläche.



        private void Submit_Click(object sender, RoutedEventArgs e)
        {
            if (stackPanel1.BindingGroup.CommitEdit())
            {
                MessageBox.Show("Item submitted");
                stackPanel1.BindingGroup.BeginEdit();
            }


        }

        // This event occurs when a ValidationRule in the BindingGroup
        // or in a Binding fails.
        private void ItemError(object sender, ValidationErrorEventArgs e)
        {
            if (e.Action == ValidationErrorEventAction.Added)
            {
                MessageBox.Show(e.Error.ErrorContent.ToString());

            }
        }

        void stackPanel1_Loaded(object sender, RoutedEventArgs e)
        {
            // Set the DataContext to a PurchaseItem object.
            // The BindingGroup and Binding objects use this as
            // the source.
            stackPanel1.DataContext = new PurchaseItem();

            // Begin an edit transaction that enables
            // the object to accept or roll back changes.
            stackPanel1.BindingGroup.BeginEdit();
        }

        private void Cancel_Click(object sender, RoutedEventArgs e)
        {
            // Cancel the pending changes and begin a new edit transaction.
            stackPanel1.BindingGroup.CancelEdit();
            stackPanel1.BindingGroup.BeginEdit();
        }



Im folgenden Beispiel wird eine benutzerdefinierte ValidationRule ValidateDateAndPricean, die an BindingGroup im ersten Beispiel hinzugefügt wurde. ValidationRule verwendet BindingGroup in der Validate-Methode, um die Werte abzurufen der Benutzer, der das Formular eingegeben wird und überprüft, ob, wenn ein Element über 100 Dollar ist für mindestens sieben Tage verfügbar ist.


public class ValidateDateAndPrice : ValidationRule
{
    // Ensure that an item over $100 is available for at least 7 days.
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        BindingGroup bg = value as BindingGroup;

        // Get the source object.
        PurchaseItem item = bg.Items[0] as PurchaseItem;

        object doubleValue;
        object dateTimeValue;

        // Get the proposed values for Price and OfferExpires.
        bool priceResult = bg.TryGetValue(item, "Price", out doubleValue);
        bool dateResult = bg.TryGetValue(item, "OfferExpires", out dateTimeValue);

        if (!priceResult || !dateResult)
        {
            return new ValidationResult(false, "Properties not found");
        }

        double price = (double)doubleValue;
        DateTime offerExpires = (DateTime)dateTimeValue;

        // Check that an item over $100 is available for at least 7 days.
        if (price > 100)
        {
            if (offerExpires < DateTime.Today + new TimeSpan(7, 0, 0, 0))
            {
                return new ValidationResult(false, "Items over $100 must be available for at least 7 days.");
            }
        }

        return ValidationResult.ValidResult;

    }
}


.NET Framework

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

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

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

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft