Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe BindingGroup

Contiene una raccolta di associazioni di oggetti e di ValidationRule utilizzati per convalidare un oggetto.

Spazio dei nomi:  System.Windows.Data
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

public class BindingGroup : DependencyObject

Il tipo BindingGroup espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoBindingGroupInizializza una nuova istanza della classe di BindingGroup .
In alto

  NomeDescrizione
Proprietà pubblicaBindingExpressionsOttiene una raccolta di oggetti di BindingExpression contenente le informazioni per ogni associazione in BindingGroup.
Proprietà pubblicaCanRestoreValuesIndica se ogni origine di associazione possibile annullare le modifiche in sospeso e ripristinare i valori originali.
Proprietà pubblicaDependencyObjectTypeottiene DependencyObjectType tale esegue il wrapping CLR tipo dell'istanza.  (Ereditato da DependencyObject)
Proprietà pubblicaDispatcher ottiene l'oggetto Dispatcher al quale l'oggetto DispatcherObject è associato. (Ereditato da DispatcherObject)
Proprietà pubblicaHasValidationErrorOttiene un valore che indica se BindingGroup ha una regola di convalida non riuscita.
Proprietà pubblicaIsDirtyOttiene o imposta un valore che indica se BindingGroup contiene un valore proposto non è stato scritto nel database di origine.
Proprietà pubblicaIsSealedOttiene un valore che indica se l'istanza attualmente è sealed (sola lettura). (Ereditato da DependencyObject)
Proprietà pubblicaItemsOttiene le origini utilizzate dagli oggetti di associazione in BindingGroup.
Proprietà pubblicaNameOttiene o imposta il nome che identifica BindingGroup, che possono essere utilizzati per includere ed escludere gli oggetti di associazione in BindingGroup.
Proprietà pubblicaNotifyOnValidationErrorOttiene o imposta se l'evento di Validation.Error si verifica quando lo stato di modifiche di ValidationRule .
Proprietà pubblicaOwnerOttiene l'oggetto che questo BindingGroup viene assegnato a.
Proprietà pubblicaSharesProposedValuesOttiene o imposta un valore che indica se BindingGroup riutilizza i valori di destinazione che non è stato eseguito il commit nel database di origine.
Proprietà pubblicaValidatesOnNotifyDataErrorOttiene o imposta un valore che indica se includere NotifyDataErrorValidationRule.
Proprietà pubblicaValidationErrorsOttiene una raccolta di ValidationError oggetto che ha causato BindingGroup per non essere valido.
Proprietà pubblicaValidationRulesOttiene una raccolta di oggetti di ValidationRule che convalidano gli oggetti origine in BindingGroup.
In alto

  NomeDescrizione
Metodo pubblicoBeginEditAvvia una transazione di modifica su database di origine in BindingGroup.
Metodo pubblicoCancelEdittermina la transazione di modifica e rimuove le modifiche in sospeso.
Metodo pubblicoCheckAccessdetermina se il thread chiamante ha accesso a questo DispatcherObject. (Ereditato da DispatcherObject)
Metodo pubblicoClearValue(DependencyProperty)cancella il valore locale di una proprietà. La proprietà da cancellare viene specificata da un oggetto DependencyProperty identificatore. (Ereditato da DependencyObject)
Metodo pubblicoClearValue(DependencyPropertyKey)Cancella il valore locale di una proprietà di sola lettura. La proprietà da cancellare viene specificata da un oggetto DependencyPropertyKey. (Ereditato da DependencyObject)
Metodo pubblicoCoerceValueAssegna il valore del specificato proprietà di dipendenza. Questa operazione viene eseguita utilizzando qualsiasi CoerceValueCallback funzione specificata nei metadati della proprietà per la proprietà di dipendenza come esiste nel chiamare DependencyObject. (Ereditato da DependencyObject)
Metodo pubblicoCommitEditEsegue tutti gli oggetti di ValidationRule e aggiorna le origini di associazione controlla se tutte le regole di convalida vengono completati.
Metodo pubblicoEqualsdetermina se fornito DependencyObject equivale a corrente DependencyObject. (Ereditato da DependencyObject)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoGetHashCodeOttiene un oggetto codice hash per questo DependencyObject. (Ereditato da DependencyObject)
Metodo pubblicoGetLocalValueEnumeratorCrea un enumeratore specializzato per determinare quali proprietà di dipendenza in locale è impostato stima su questa DependencyObject. (Ereditato da DependencyObject)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoGetValue(DependencyProperty)Restituisce il valore effettivo corrente di un oggetto proprietà di dipendenza in questa istanza di un oggetto DependencyObject. (Ereditato da DependencyObject)
Metodo pubblicoGetValue(Object, String)Restituisce il valore proposto per la proprietà e l'elemento specificato.
Metodo pubblicoInvalidatePropertyRivaluta il valore effettivo per la proprietà di dipendenza (Ereditato da DependencyObject)
Metodo protettoMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo protettoOnPropertyChangedRichiamato ogni volta che il valore effettivo di qualsiasi proprietà di dipendenza in questo DependencyObject è stato aggiornato. La proprietà di dipendenza specifica che è stata modificata è indicata nei dati di evento. (Ereditato da DependencyObject)
Metodo pubblicoReadLocalValueRestituisce il valore locale di un oggetto proprietà di dipendenza, se esiste. (Ereditato da DependencyObject)
Metodo pubblicoSetCurrentValueImposta il valore di un oggetto proprietà di dipendenza senza modificarne il codice sorgente di valore. (Ereditato da DependencyObject)
Metodo pubblicoSetValue(DependencyProperty, Object)Imposta il valore locale di un oggetto proprietà di dipendenza, specificato dal relativo identificatore di proprietà di dipendenza. (Ereditato da DependencyObject)
Metodo pubblicoSetValue(DependencyPropertyKey, Object)Imposta il valore locale di un oggetto di sola lettura proprietà di dipendenza, specificato da DependencyPropertyKey identificatore della proprietà di dipendenza. (Ereditato da DependencyObject)
Metodo protettoShouldSerializePropertyRestituisce un valore che indica se i processi di serializzazione deve serializzare il valore fornito per proprietà di dipendenza. (Ereditato da DependencyObject)
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblicoTryGetValueTenta di ottenere il valore proposto per la proprietà e l'elemento specificato.
Metodo pubblicoUpdateSourcesEsegue il convertitore sull' associazione e su oggetti di ValidationRule la cui proprietà è impostata su di ValidationStep a RawProposedValue, a ConvertedProposedValue, o a UpdatedValue e salvano i valori di destinazione a oggetti di origine se tutte le regole di convalida vengono completati.
Metodo pubblicoValidateWithoutUpdateEsegue il convertitore sull' associazione e su oggetti di ValidationRule la cui proprietà è impostata su di ValidationStep a RawProposedValue o a ConvertedProposedValue.
Metodo pubblicoVerifyAccess Impone che il thread chiamante abbia accesso a questo DispatcherObject. (Ereditato da DispatcherObject)
In alto

BindingGroup crea una relazione tra più associazioni, che possono essere convalidati raccolta e aggiornate. Ad esempio, si supponga che un'applicazione spinga all' utente di immettere un indirizzo. L'applicazione viene quindi compila un oggetto di tipo Address, che dispone delle proprietà, Street, City, ZipCodee Country, con i valori che l'utente ha fornito da. L'applicazione include un pannello che contiene quattro controlli di TextBox , ciascuno associato a dati a una delle proprietà dell' oggetto. È possibile utilizzare ValidationRule in BindingGroup per convalidare l'oggetto di Address . Se le associazioni partecipano a stesso BindingGroup, è possibile assicurarsi che il codice postale è valido per il paese/regione indirizzo.

Impostare la proprietà di BindingGroup su FrameworkElement o su FrameworkContentElement. Gli elementi figlio ereditano BindingGroup dagli elementi padre, come per qualsiasi altra proprietà ereditabile. Un'associazione in un elemento discendente viene aggiunto a BindingGroup se una delle seguenti situazioni si verifica l'evento:

In l ' esempio indirizzo, si supponga che DataContext di Panel sia impostato sull' oggetto di tipo Address. L'associazione per ogni TextBox viene aggiunto a BindingGroup del pannello.

Aggiungere gli oggetti di ValidationRule a BindingGroup. BindingGroup viene passato come primo parametro del metodo di Validate quando ValidationRule viene eseguito. È possibile utilizzare il metodo di GetValue(Object, String) o di TryGetValue su tale BindingGroup per ottenere i valori proposti dell' oggetto e la proprietà di Items per ottenere le origini delle associazioni.

BindingGroup aggiorna i database di origine di associazione contemporaneamente anziché ogni associazione che viene aggiornata separatamente. Quando si chiama uno dei metodi per convalidare i dati (ValidateWithoutUpdate, UpdateSources, o CommitEdit), l'associazione per ogni TextBox nell' esempio viene convalidata e potenzialmente aggiornato. Quando un'associazione fa parte di BindingGroup, l'origine di associazione non viene aggiornato finché non viene chiamato UpdateSources o CommitEdit su BindingGroup, a meno che in modo esplicito di impostare la proprietà di UpdateSourceTrigger .

In gli esempi creare un'applicazione che richiede all' utente di immettere la descrizione e il prezzo di un elemento e la data in cui questi scade. L'applicazione visualizza le informazioni correnti per l'elemento sotto il form. l'utente può inviare o annullare le modifiche.

L'applicazione esegue le operazioni seguenti per ottenere questo comportamento.

  • Crea BindingGroup e lo aggiunge StackPanel radice quando si crea interfaccia utente dell' applicazione. 

  • Chiama BeginEdit, CommitEdite CancelEdit la logica dell' applicazione per abilitare le modifiche del ripristino.

  • Chiamate TryGetValue in un metodo di Validate per ricevere l'input dell' utente e per controllare che un elemento oltre 100 dollari sia disponibile per almeno i sette giorni.

In l ' esempio riportato interfaccia utente dell' applicazione. StackPanel radice ha BindingGroup che contiene ValidationRule che convalida l'elemento, come descritto in precedenza. Gli oggetti di associazione nella proprietà di Price e la proprietà di OfferExpires diventano parte di BindingGroup e ogni associazione ha ValidationRule per assicurarsi che il prezzo e la data, rispettivamente, sono valori validi. Le regole di convalida per le singole proprietà vengono eseguite prima diValidationRule su 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>


In l ' esempio seguente vengono illustrati i gestori eventi per l'applicazione. Quando l'utente fa clic sul pulsante submit, l'applicazione chiama CommitEdit per eseguire ogni ValidationRule associata a BindingGroup. Se ogni ValidationRule ha esito positivo, CommitEdit salva i valori all' oggetto e termina la transazione di modifica. Se CommitEdit ha esito positivo, l'applicazione viene avviata un'altra transazione di modifica. Quando ValidationRule non riesce, l'evento di Validation.Error si verifica perché l'applicazione NotifyOnValidationError stabilito a true su BindingGroup (nell' esempio precedente). ItemError gestisce l'evento di Validation.Error e visualizzare le informazioni sull' errore di convalida all' utente. Viene inoltre gestisce l'evento di Loaded per StackPanel e l'evento di Click per il pulsante di Annulla .



        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();
        }



In l ' esempio seguente viene illustrato ValidationRule personalizzatoValidateDateAndPrice, che viene aggiunto a BindingGroup nel primo esempio. ValidationRule utilizza BindingGroup nel metodo di Validate per ottenere i valori immessi nel form e verifica che se un elemento è oltre 100 dollari, sia disponibile per almeno i sette giorni.


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

Supportato in: 4.5, 4, 3.5 SP1, 3.0 SP2

.NET Framework Client Profile

Supportato 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 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro pubblico static (Shared in Visual Basic) di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft