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 i dati dell'evento Control.IsEnabledChanged e qualsiasi altro evento che usa il delegato DependencyPropertyChangedEventHandler .
public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyPropertyChangedEventArgs final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyPropertyChangedEventArgs
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
- Ereditarietà
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Questo esempio mostra un'implementazione PropertyChangedCallback che usa i dati dell'evento DependencyPropertyChangedEventArgs. In particolare, usa NewValue per impostare una proprietà correlata, che visualizza il valore numerico DependencyProperty sottostante 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();
}
Private Shared Sub ValueChangedCallback(ByVal obj As DependencyObject, _
ByVal args As DependencyPropertyChangedEventArgs)
Dim ctl As NumericUpDown = DirectCast(obj, NumericUpDown)
Dim newValue As Integer = args.NewValue
' Update the TextElement to the new value.
If ctl.TextElement IsNot Nothing Then
ctl.TextElement.Text = newValue.ToString()
End If
Commenti
DependencyPropertyChangedEventArgs fornisce dati per due situazioni diverse che comportano modifiche ai valori delle proprietà di dipendenza:
- Informazioni di callback situazioni 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 info su come usare i dati dell'evento DependencyPropertyChangedEventArgs in questo caso, vedi DependencyPropertyChangedEventHandler o Control.IsEnabledChanged.
Un'implementazione PropertyChangedCallback è una parte facoltativa dei metadati della proprietà forniti quando si registra una proprietà di dipendenza. Il callback viene richiamato internamente dal sistema di proprietà di dipendenza. Per altre informazioni sulle proprietà di dipendenza in generale, vedi Panoramica delle proprietà di dipendenza 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 dipendenza in cui viene modificata la proprietà. Per molte operazioni, ad esempio la correzione o la coercizione di un valore o la modifica di un altro valore della proprietà calcolata in risposta sullo stesso oggetto, si farà riferimento a questo DependencyObject. In genere si vuole eseguirne il cast al tipo di proprietario della proprietà modificata. Il tipo di proprietario è il tipo a cui fa riferimento per nome nella chiamata DependencyProperty.Register ; i metadati in cui viene assegnato propertyChangedCallback ai metadati della proprietà 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 proprietà Double in cui il callback ha sempre diviso il valore per 2, tale callback verrebbe chiamato in modo ricorsivo e l'app si troverebbe in un ciclo infinito.
È possibile che due o più proprietà di dipendenza diverse definiscano i callback per cambiare l'uno l'altro, ma di nuovo prestare attenzione a non creare una dipendenza circolare non intenzionale che non consenta la stabilizzazione dei valori.
PropertyChangedCallback viene richiamato solo se OldValue e NewValue nei dati dell'evento sono diversi.
OldValue e NewValue vengono non tipizzati, quindi qualsiasi confronto eseguito richiede probabilmente un cast. Molti valori delle proprietà di dipendenza usano un tipo valore, ovvero si farà affidamento sugli operatori o su altre API del tipo di valore per eseguire i confronti. Tale funzionalità è in genere disponibile nella struttura che rappresenta un valore, come API di utilità. Ad esempio, l'API dell'utilità specifica della lingua in un valore Spessore consente di confrontare i valori di Spessore .
Nota
Se si esegue la programmazione 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 helper complementare che fornisce l'API di confronto che può essere usata dal codice C++. Ad esempio, usare la classe ColorHelper per confrontare i valori color .
Uso di DependencyPropertyChangedEventArgs per un evento personalizzato
Un implementatore di controllo personalizzato può prendere in considerazione 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 tale evento solo dal contesto di propertyChangedCallback. Ciò è dovuto al fatto che il valore modificato (la proprietà , il valore precedente e nuovo) deve trovarsi nelle proprietà DependencyPropertyChangedEventArgs segnalate per l'evento a livello di sistema delle proprietà. Tuttavia, non esistono costruttori per DependencyPropertyChangedEventArgs e nessuna delle relative proprietà è impostabile, quindi l'unico modo per ottenere un valore DependencyPropertyChangedEventArgs consiste nel recuperarlo dai parametri PropertyChangedCallback originali e passarlo quando si genera 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. |