DependencyPropertyChangedEventArgs Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce dati per un'implementazione PropertyChangedCallback richiamata quando una proprietà di dipendenza modifica il relativo valore. Fornisce anche dati di evento per l'evento Control.IsEnabledChanged e qualsiasi altro evento che usa il delegato DependencyPropertyChangedEventHandler .
public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
- Ereditarietà
- Attributi
Esempio
In questo esempio viene illustrata un'implementazione propertyChangedCallback che usa i dati dell'evento DependencyPropertyChangedEventArgs
. In particolare, usa NewValue per impostare una proprietà correlata, che visualizza il valore di Dipendenza numerica sottostanteProperty come testo, in una parte TextBlock di un controllo composito.
private static void ValueChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
NumericUpDown ctl = (NumericUpDown)obj;
Int32 newValue = (Int32)args.NewValue;
// Update the TextElement to the new value.
if (ctl.TextElement != null)
{
ctl.TextElement.Text = newValue.ToString();
}
Commenti
DependencyPropertyChangedEventArgs
fornisce i dati per due situazioni diverse che comportano modifiche ai valori delle proprietà di dipendenza:
- Informazioni di callback situazionele usate da propertyChangedCallback per una proprietà di dipendenza personalizzata. Questo è il caso più comune.
- Dati dell'evento per un evento basato su DependencyPropertyChangedEventHandler. Questo è meno comune perché l'unico evento Windows Runtime che usa questo delegato è l'evento Control.IsEnabledChanged. Per altre informazioni su come usare i dati dell'evento
DependencyPropertyChangedEventArgs
in questo caso, vedereDependencyPropertyChangedEventHandler
oControl.IsEnabledChanged
.
Un'implementazione PropertyChangedCallback è una parte facoltativa dei metadati delle proprietà forniti quando si registra una proprietà di dipendenza. Il callback viene richiamato dal sistema delle proprietà di dipendenza internamente. Per altre informazioni sulle proprietà di dipendenza in generale, vedere Panoramica delle proprietà delle dipendenze personalizzate e Delle proprietà di dipendenza.
In genere si definisce il metodo con accesso privato o interno. Il metodo deve essere statico. Poiché il metodo è statico, il parametro DependencyObject (d) del delegato PropertyChangedCallback è importante. Questo è ciò che identifica l'istanza specifica dell'oggetto di dipendenza in cui viene modificata la proprietà. Per molte operazioni, ad esempio la correzione o la coercing di un valore o la modifica di un altro valore della proprietà calcolata nella risposta nello stesso oggetto, si farà riferimento a questo DependencyObject
oggetto . In genere si vuole eseguirne il cast al tipo di proprietario della proprietà che cambia. Il tipo di proprietario è il tipo a cui fa riferimento il nome nella chiamata DependencyProperty.Register; i metadati assegnati ai metadati delle proprietà PropertyChangedCallback
fanno parte della stessa chiamata.
Tenere presente la possibilità di ricorsione. Se si modifica il valore di una proprietà di dipendenza per cui viene richiamato PropertyChangedCallback , verrà richiamato di nuovo. Ad esempio, se è stato creato un callback per una Double
proprietà in cui il callback divide sempre il valore in base a 2, tale callback verrà chiamato ricorsivo e l'app si trova in un ciclo infinito.
È legale avere due o più proprietà di dipendenza diverse che definiscono i callback per cambiare l'uno l'altro, ma prestare di nuovo attenzione a non creare una dipendenza circolare non intenzionale che non abilita la stabilizzazione dei valori.
Un propertyChangedCallback viene richiamato solo se i dati dell'evento OldValue e NewValue sono diversi.
OldValue e NewValue vengono non tipizzato, quindi qualsiasi confronto che si esegue probabilmente richiede un cast. Molti valori delle proprietà di dipendenza usano un tipo di valore, ovvero si farà affidamento sugli operatori o su altre API del tipo di valore per eseguire i confronti. Questa funzionalità è in genere disponibile nella struttura che rappresenta un valore, come API di utilità. Ad esempio, l'API dell'utilità specifica del linguaggio in un valore Spessore consente di confrontare i Thickness
valori.
Nota
Se si sta programmando con C++, alcune delle strutture Windows Runtime non supportano membri non dati, quindi non supportano operatori o altre utilità. Per questi elementi è disponibile una classe complementare Helper
che fornisce l'API di confronto che il codice C++ può usare. Ad esempio, usare la classe ColorHelper per confrontare i valori Color .
Uso di DependencyPropertyChangedEventArgs per un evento personalizzato
Un implementatore di controllo personalizzato può considerare l'uso di DependencyPropertyChangedEventHandler come tipo delegato se un evento personalizzato viene generato in seguito a una modifica del valore della proprietà di dipendenza. È possibile generare un evento di questo tipo solo nel contesto di un PropertyChangedCallback. Questo è dovuto al fatto che il valore modificato (la proprietà, il valore precedente e nuovo) deve trovarsi nell'oggetto DependencyPropertyChangedEventArgs
segnalato per l'evento a livello di sistema delle proprietà. Ma non ci sono costruttori per DependencyPropertyChangedEventArgs
e nessuno dei relativi proprietà sono impostate, quindi l'unico modo per ottenere un DependencyPropertyChangedEventArgs
valore consiste nel recuperarlo dai parametri originali PropertyChangedCallback
e passarlo quando si attiva l'evento personalizzato.
Proprietà
NewValue |
Ottiene il valore della proprietà di dipendenza dopo la modifica segnalata. |
OldValue |
Ottiene il valore della proprietà di dipendenza prima della modifica segnalata. |
Property |
Ottiene l'identificatore per la proprietà di dipendenza in cui si è verificata la modifica del valore. |